Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 未更改地图元素的恢复顺序是否始终相同? map>mymap_C++_C++11 - Fatal编程技术网

C++ 未更改地图元素的恢复顺序是否始终相同? map>mymap

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的角

我想知道如果在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
的角度)

因此,如果您迭代一次并使用
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
}