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)
答案 0 :(得分:0)
然后你需要std::unordered_map
答案 1 :(得分:0)
在std::map<Key, Value, Comparer>
中,元素按照Key
和Comparer
排序。 Comparer
仍应为2个给定的密钥提供相同的结果,并且不应修改密钥(从Comparer
的角度来看)。
所以,如果你迭代一次并拥有key1 < key2 < key3
即使在添加/删除后,您仍然拥有这些相对顺序:key1 < keyA < key2 < keyB < key3
或者如果您只删除key2
:key1 < key3
。