我的意思是-我们知道std::map
的元素是根据键排序的。因此,假设键是整数。如果从迭代std::map::begin()
到std::map::end()
使用for
,标准是否保证我将因此依次迭代具有键的元素(按升序排序)?
例:
std::map<int, int> map_;
map_[1] = 2;
map_[2] = 3;
map_[3] = 4;
for( std::map<int, int>::iterator iter = map_.begin();
iter != map_.end();
++iter )
{
std::cout << iter->second;
}
是否保证可以打印234
或实现定义?
现实生活中的原因:我有一个std::map
带int
钥匙的。在极少数情况下,我想遍历所有具有关键意义而不是具体int
价值的要素。是的,听起来std::vector
是更好的选择,但是请注意我的“非常罕见的情况”。
编辑:我知道,的元素std::map
已排序..无需指出(对于此处的大多数答案)。我什至在我的问题中写了它。
我在遍历容器时询问迭代器和顺序。感谢@Kerrek SB的回答。
map::upper_bound
来寻找开始迭代的点。