我的意思是 - 我们知道这些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;
}
Run Code Online (Sandbox Code Playgroud)
这是保证打印234还是实现定义?
现实生活中的原因:我有一个std::map带int钥匙.在非常罕见的情况下,我想用键来迭代所有元素,而不是具体的int值.是的,听起来似乎std::vector是更好的选择,但请注意我的"非常罕见的情况".
编辑:我知道,元素std::map是排序的..没有必要指出它(这里的大多数答案).我甚至在我的问题中写过它.
我在迭代容器时询问迭代器和顺序.谢谢@Kerrek SB的答案.