我的意思是 - 我们知道
这是否保证打印
真实的原因:我有一个以int为键的std::map。在非常罕见的情况下,我想遍历所有键大于某个具体int值的元素。是的,听起来std::vector可能是更好的选择,但请注意我的“非常罕见的情况”。
编辑:我知道,
我问的是关于迭代器和遍历容器时的顺序。谢谢@Kerrek SB的回答。
std::map
的元素是根据键进行排序的。所以,假设键是整数。如果我使用 for
从 std::map::begin()
迭代到 std::map::end()
,标准是否保证我会按照升序顺序连续迭代元素的键?
例子:
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
,还是由实现定义?
真实的原因:我有一个以int为键的std::map。在非常罕见的情况下,我想遍历所有键大于某个具体int值的元素。是的,听起来std::vector可能是更好的选择,但请注意我的“非常罕见的情况”。
编辑:我知道,
std::map
的元素是有序的,不需要再指出来(对于大多数回答来说)。我甚至在问题中写了这一点。我问的是关于迭代器和遍历容器时的顺序。谢谢@Kerrek SB的回答。
map::upper_bound
来找到开始迭代的位置。 - Steve Jessop