地图中未更改的元素的恢复顺序始终相同

  • 本文关键字:顺序 恢复 元素 地图 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)

然后你需要 std::unordered_map

std::map<Key, Value, Comparer>中,元素根据KeyComparer排序。 对于 2 个给定的键,Comparer 仍然应该给出相同的结果,并且不应该修改键(从Comparer的角度来看)。

因此,如果您迭代一次并具有key1 < key2 < key3那么即使在添加/删除之后,您仍然有这些相对顺序:key1 < keyA < key2 < keyB < key3
或者如果您只删除key2key1 < key3 .

最新更新