对 2 个"linked"数组进行排序的更好方法?
Better way to sort 2 "linked" arrays?
我有2个存储"链接"属性的向量。这就是我的意思:
std::vector<std::string> names;
std::vector<int> ids;
// Name of object with an ID of 5
auto name = names[std::find(ids.begin(), ids.end(), 5) - ids.begin()];
每个对象都有名称和ID,因此索引n处的对象名称为name[n]
, ID为ids[n]
。
现在我要按字母顺序对名字进行排序。我可以使用std::sort
:
std::sort(names.begin(), names.end());
但是现在id不匹配了!我想做一个对的向量,把每个名字/id放进去,排序,然后提取数据。
这并不是很有效,因为我必须对两个向量的每个元素循环2次,而向量有很多元素。
我怎样才能使它更有效,因为我不能从一开始就使用成对向量来代替2个向量?
您可以使用std::map字符串将名称映射到它们的索引(这是相同的id索引),如果您也想使用std::map int将id映射到它们的索引(这是相同的名称索引)。
这样你可以保持数组的原样,并有两个有序的结构,可以给你所需的索引快速访问你的数组。
相关文章:
- C++:将控制台输出存储在宏中更好吗
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 初始化具有非默认构造函数的std::数组项的更好方法
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践
- 为什么新的随机库比std::rand()更好
- 寻找一种更好的方法来表示无符号字符数组
- 如何使插入排序更快?
- 哪种方法更好,性能明智
- 什么更好?返回对象指针列表?或返回指向对象列表的指针?
- 什么是更好的做法?通过指针或标识符传递类成员?
- 寻求更好地理解标准::访问
- 线程消息传递或更好:在"大师班"中访问其他班级的成员
- 有没有更好的方法来处理异常? try-catch块真的很丑
- 有没有更好的方法对C++中的三个整数进行排序?
- 从矢量中最快的擦除元素或更好地利用内存(排序基数)
- 改善并行bitonic排序的更好方法
- 更好的做法是在数组中插入值,然后排序,或者在插入时保持排序顺序
- 寻找更好的数据排序方法
- 对 2 个"linked"数组进行排序的更好方法?
- 这是对不同数字排序的更好方法