Какой лучший (самый быстрый) способ объединить два больших уже отсортированных QVector
в одном большом отсортированном QVector
?Самый быстрый способ объединить два больших QVector и отсортировать их (C++/Qt)
У меня есть следующий код:
class Square
{
.....
qint32 id; //public
.....
}
QVector <Square> v_one; //size 10000+
QVector <Square> v_two; //size 10000+
У меня есть v_one
и v_two
уже отсортированные по "id
".
Как выполнить БЫСТРО слияние этих двух векторов в одной из них (например, v_one = v_one + v_two
) с сортировкой по id
.
Я думаю, что я должен делать это как одно действие (сортировка и слияние), а не один за другим?
Спасибо!
http://www.cplusplus.com/reference/algorithm/merge/ (либо вы используете его напрямую, либо переопределяете описанный там алгоритм). –
@MatteoItalia Похоже, это будет очень медленно, нет? –
Я бы пошел многопоточным с сортировкой слияния. Конкатенация обоих векторов не может быть значительно ускорена, но следующая сортировка может быть использована с использованием нескольких ядер в вашей системе => сортировка слияния, которая хорошо подходит для параллельной сортировки. – rbaleksandar