【发布时间】:2016-05-19 00:40:59
【问题描述】:
将两个已排序的大型QVector 连接到一个已排序的QVector 中的最佳(最快)方法是什么?
我有以下代码:
class Square
{
.....
qint32 id; //public
.....
}
QVector <Square> v_one; //size 10000+
QVector <Square> v_two; //size 10000+
我的v_one 和v_two 已经按“id”排序。
如何通过 id 排序将这两个向量合并到其中一个向量(例如v_one = v_one + v_two)中。
我认为我必须将其作为一个动作(排序和合并)来执行,而不是一个接一个?
谢谢!
【问题讨论】:
-
cplusplus.com/reference/algorithm/merge(要么直接使用它,要么重新实现其中描述的算法)。
-
@MatteoItalia 看起来会非常慢,不是吗?
-
我会使用合并排序进行多线程处理。两个向量的连接不能加速太多,但是可以通过使用系统上的多个核心来进行排序 => 合并排序非常适合并行排序。
-
@VoronkovIvan:参数总数为 O(n) 与任何“常规”基于排序的解决方案的 O(n log n) 相比,你不会渐近地击败这个。顺便说一句,如果我们谈论 n~10000 任何东西都可以,对于任何 cpu 来说这都是非常小的东西。
标签: c++ qt sorting concatenation qvector