是map :: iterator的输出顺序吗?
例如,我用一些键/值初始化一个映射,然后执行一系列循环,并在每个循环中迭代映射并执行只读操作,每次迭代的输出是否相等?
for(i=0;i<5;i++)
for(it=map.begin(); it!=map.end(); it++)
// read some value from map
答案 0 :(得分:11)
std::map
是一个有序集合。从begin()
到end()
的迭代将始终按顺序返回地图条目。
订单由地图的比较运算符确定,默认为std::less<Key>
。
总之:是的。
答案 1 :(得分:0)
订单仅在修改操作(insert,erase,clear)上修改,其他操作不会影响订购
答案 2 :(得分:0)
std::map
保证要排序。如果内容没有改变,则不应该进行地图排序。
我只能想到一个可能不会发生这种情况的场景:map键是指针和比较functor dereferences对象指向的对象,用于对它们执行比较操作。键不会更改,但do指向的值(由于任何其他原因)。即使在那里,我也不确定标准是否强制实施std::map
仅在插入元素时评估比较。