相关疑难解决方法(0)

迭代通过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;
}
Run Code Online (Sandbox Code Playgroud)

这是保证打印234还是实现定义?


现实生活中的原因:我有一个std::mapint钥匙.在非常罕见的情况下,我想用键来迭代所有元素,而不是具体的int值.是的,听起来似乎std::vector是更好的选择,但请注意我的"非常罕见的情况".


编辑:我知道,元素std::map是排序的..没有必要指出它(这里的大多数答案).我甚至在我的问题中写过它.
我在迭代容器时询问迭代器和顺序.谢谢@Kerrek SB的答案.

c++ standards dictionary stl

149
推荐指数
4
解决办法
7万
查看次数

标签 统计

c++ ×1

dictionary ×1

standards ×1

stl ×1