Насколько я понимаю, быстрая сортировка, если перетасовка членов выполняется с помощью копировального ключа, вы будете очень разочарованы тем, что O(n ln п) действительно означает. Поэтому я решил протестировать qSort
с
QList<QObject> mylist; //Yes, I know this isn't feasible, I just wanted to find where the copy ctor is being used
qSort(list);
и получил удар с теми
'QObject::QObject(const QObject&)' является приватным
ошибки. Насколько я могу судить, проблема начинается с метода begin()
, потому что если у меня есть
list.begin();
ошибка компилятора указывает на то, что эта строка qlist.h каким-то образом пытается использовать копию ctor:
inline void detach() { if (d->ref != 1) detach_helper(); }
Я понимаю, что могу сделать указатели на элементы списка, а затем реализовать lessThan
a>, но это не очень удобно для этой кодовой базы. Итак, как я могу избежать использования copy ctor, когда qSort
работает со списком объектов?
Я использую Qt 4.8 в 64-битной и 32-битной Linux.
std::sort
иvector
, а не Qt (но я полагаю, что тот же принцип будет действовать). - person PaulMcKenzie   schedule 03.08.2017