通过std :: map进行迭代的顺序是否已知(并由标准保证)?
我的意思是-我们知道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的回答。