據我瞭解快速排序,如果成員的洗牌與拷貝構造函數完成後,你會由什麼Ø(ñ LN n爲非常失望)的意思。所以我決定測試qSort
與Qt的:快速排序,而無需使用拷貝構造函數
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的(常量的QObject &)' 是私有
錯誤。從我所知道的,問題與begin()
方法開始,因爲如果我有
list.begin();
編譯器錯誤表明該qlist.h線以某種方式試圖使用拷貝構造函數:
inline void detach() { if (d->ref != 1) detach_helper(); }
我意識到我可以創建列表的成員指針,然後實現lessThan
函數,但這對於此代碼庫不太方便。那麼,如何在qSort
在對象列表上操作時避免使用複製ctor?
我在Linux 64位和32位上使用Qt 4.8。
我不使用qt,但可以設置一組從0到最大項目數-1的索引。然後,對索引進行排序,而不是對列表進行排序,並使用它來引用數據。 – PaulMcKenzie
@PaulMcKenzie比使用指針更好嗎? – Opux
是的,它比指針「更好」,因爲它不需要指針。我可以發佈一個答案,但它將適用於使用'std :: sort'和'vector',而不是Qt(但是我相信這個原則是相同的)。 – PaulMcKenzie