【发布时间】: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<what_you_actually_want_to_sort,original_index>的列表进行排序 -
@Logicstuff 我想非常频繁地跳入数组,并线性扫描数据。在空间中制作这个顺序是非常值得的。
-
@tobi303 同上原因,我希望所有的值在内存中都是连续的