地图元素的恢复顺序没有改变总是一样的?

时间:2016-02-25 16:44:17

标签: c++ c++11

map<vector<int>,int> > mymap

我想知道如果mymap没有做任何事情,地图中的项目顺序是否会改变。也就是说,假设地图有3对,我称之为1 2 3,当我进入地图时,使用此代码:

for(auto i = mymap.begin();i!=mymap.end();i++)
{
    cout<<i->first<<endl; //operator<< is redefenid
}

元素按此顺序返回:3 2 1 以后没有用上面相同的代码对地图进行任何更改,我保证按照与之前相同的顺序访问元素(即3 2 1)? (我使用C ++ 11)

2 个答案:

答案 0 :(得分:0)

然后你需要std::unordered_map

答案 1 :(得分:0)

std::map<Key, Value, Comparer>中,元素按照KeyComparer排序。 Comparer仍应为2个给定的密钥提供相同的结果,并且不应修改密钥(从Comparer的角度来看)。

所以,如果你迭代一次并拥有key1 < key2 < key3 即使在添加/删除后,您仍然拥有这些相对顺序:key1 < keyA < key2 < keyB < key3
或者如果您只删除key2key1 < key3