【问题标题】:Sorting with indices using sort in C++在 C++ 中使用 sort 对索引进行排序
【发布时间】:2023-03-11 09:54:02
【问题描述】:

在上一个问题中,一个答案显示了如何使用 lambdas 来跟踪数组中的原始位置并仅对索引进行排序。

C++ sorting and keeping track of indexes

我想对列表进行排序但存储原始索引。一种方法是对索引进行排序,然后重新排序列表。这将需要两次通过,第二次是 O(n) 所以也许这还不错。但我想知道是否可以同时重新排序值并交换列表。问题是用于比较的 lambda 只需要两个参数。

最好的写作方式是什么:

template<typename T>
sortWithIndexes(v, indexes, n) {

}

这样v被重新排序,索引包含v的每个元素的原始位置?

【问题讨论】:

  • 为什么不只对索引进行排序?
  • 你可以对pair&lt;what_you_actually_want_to_sort,original_index&gt;的列表进行排序
  • @Logicstuff 我想非常频繁地跳入数组,并线性扫描数据。在空间中制作这个顺序是非常值得的。
  • @tobi303 同上原因,我希望所有的值在内存中都是连续的

标签: c++ sorting indices


【解决方案1】:

您也可以使用std::multimap。它会自动对 w.r.t 键进行排序。

【讨论】:

    猜你喜欢
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2023-03-28
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多