【发布时间】:2014-04-24 08:52:24
【问题描述】:
关于如何在 C++ 中一次对多个数组进行排序,有很多问题。答案总是相同的,即使用结构向量而不是多个数组。不幸的是,由于多种原因(I/O、部分 MPI 传输、矢量化单元的使用等),我不能这样做。此外,由于内存限制,我无法在排序后将结构数组转换为独立数组。我的问题是,是否存在任何可以与自定义交换(和自定义比较)操作一起使用的高效(n log n)排序算法的 C++ 实现?
(我仍然无法理解为什么 STL 中缺少这样的选项。显然,很多 C++ 程序员都在要求它。)
【问题讨论】:
-
您可以针对您的类型专门化
std::swap。 -
你问为什么不见了?好吧,在必须同时对两个数组进行排序的情况下,您多久运行一次.. ;)
-
@chirs:不确定它是否有效,请参阅stackoverflow.com/questions/14212701/…
-
@DanielLangr,说得好。
-
您能否创建一个映射向量或数组,将您的排序索引映射到并行数组的实际索引?我相信您可以在带有自定义比较器的映射数组上使用
std:sort。