相关疑难解决方法(0)

C++ STL map我不想让它排序!

这是我的代码

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数据结构?哪一个?

c++ stl

23
推荐指数
4
解决办法
3万
查看次数

对矢量进行排序的最佳方法是什么,使原始矢量保持不变?

正如标题所说,我正在寻找一种方法来对矢量进行排序,而无需修改原始矢量.我的第一个想法当然是在排序之前创建一个向量副本,例如:

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++标准算法执行排序(可能是sorttransform?的组合)

c++ sorting stl

7
推荐指数
2
解决办法
1456
查看次数

标签 统计

c++ ×2

stl ×2

sorting ×1