C++ 未更改地图元素的恢复顺序是否始终相同? map>mymap
我想知道如果在mymap上不做任何事情,地图中项目的顺序是否会改变。也就是说,假设映射有3对,我称之为1 2 3,当我使用以下代码进入映射时:C++ 未更改地图元素的恢复顺序是否始终相同? map>mymap,c++,c++11,C++,C++11,我想知道如果在mymap上不做任何事情,地图中项目的顺序是否会改变。也就是说,假设映射有3对,我称之为1 2 3,当我使用以下代码进入映射时: map<vector<int>,int> > mymap for(自动i=mymap.begin();i!=mymap.end();i++) { cout那么您需要在std::map中,元素按照Key排序,Comparer对于两个给定的键,Comparer仍然应该给出相同的结果,并且不应该修改Key(从Comparer的角
map<vector<int>,int> > mymap
for(自动i=mymap.begin();i!=mymap.end();i++)
{
cout那么您需要在std::map
中,元素按照Key
排序,Comparer
对于两个给定的键,Comparer
仍然应该给出相同的结果,并且不应该修改Key(从Comparer
的角度)
因此,如果您迭代一次并使用key1
即使在添加/删除之后,您仍然具有以下相对顺序:key1
或者,如果您仅删除
key2
:key1
则根据键,始终存在词法顺序(您不应更改)@Jarod42所以如果我不在容器上进行破坏性操作,我可以保证元素的恢复顺序是相同的?@Umbert你想说的是,如果你不触摸地图上用作键的容器,甚至不触摸它,那么就可以保证元素的恢复顺序是相同的!如果我理解你的疑问correctly@Deepanshu你很明白为什么吗?如果OP不改变地图,它将始终以相同的方式打印。
for(auto i = mymap.begin();i!=mymap.end();i++)
{
cout<<i->first<<endl; //operator<< is redefenid
}