这是我的代码
map<string,int> persons;
persons["B"] = 123;
persons["A"] = 321;
for(map<string,int>::iterator i = persons.begin();
i!=persons.end();
++i)
{
cout<< (*i).first << ":"<<(*i).second<<endl;
}
Run Code Online (Sandbox Code Playgroud)
预期产量:
B:123
A:321
Run Code Online (Sandbox Code Playgroud)
但它给出的输出是:
A:321
B:123
Run Code Online (Sandbox Code Playgroud)
我希望它保持键中插入键和值的顺序map<string,int>.
可能吗?或者我应该使用其他一些STL数据结构?哪一个?
正如标题所说,我正在寻找一种方法来对矢量进行排序,而无需修改原始矢量.我的第一个想法当然是在排序之前创建一个向量副本,例如:
std::vector<int> not_in_place_sort(const std::vector<int>& original)
{
auto copy = original;
std::sort(copy.begin(), copy.end());
return copy;
}
Run Code Online (Sandbox Code Playgroud)
但是,也许有一种更有效的方法来使用C++标准算法执行排序(可能是sort和transform?的组合)