We need less code now, and moreover, the STL implementation of rotate
should be more efficient than three reverse() calls.
#include <QThread>
#include <QtCore>
#include <QThread>
#include <QtCore>
void KFileItemModelSortAlgorithm::sort(KFileItemModel* model,
QList<KFileItemModel::ItemData*>::iterator begin,
QList<KFileItemModel::ItemData*>::iterator end)
void KFileItemModelSortAlgorithm::sort(KFileItemModel* model,
QList<KFileItemModel::ItemData*>::iterator begin,
QList<KFileItemModel::ItemData*>::iterator end)
firstCut = upperBound(model, begin, pivot, *secondCut);
}
firstCut = upperBound(model, begin, pivot, *secondCut);
}
- reverse(firstCut, pivot);
- reverse(pivot, secondCut);
- reverse(firstCut, secondCut);
+ std::rotate(firstCut, pivot, secondCut);
const QList<KFileItemModel::ItemData*>::iterator newPivot = firstCut + len2Half;
merge(model, begin, firstCut, newPivot);
const QList<KFileItemModel::ItemData*>::iterator newPivot = firstCut + len2Half;
merge(model, begin, firstCut, newPivot);
-
-void KFileItemModelSortAlgorithm::reverse(QList<KFileItemModel::ItemData*>::iterator begin,
- QList<KFileItemModel::ItemData*>::iterator end)
-{
- // The implementation is based on qReverse() from qalgorithms.h
- // Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-
- --end;
- while (begin < end) {
- qSwap(*begin++, *end--);
- }
-}
QList<KFileItemModel::ItemData*>::iterator begin,
QList<KFileItemModel::ItemData*>::iterator end,
const KFileItemModel::ItemData* value);
QList<KFileItemModel::ItemData*>::iterator begin,
QList<KFileItemModel::ItemData*>::iterator end,
const KFileItemModel::ItemData* value);
-
- static void reverse(QList<KFileItemModel::ItemData*>::iterator begin,
- QList<KFileItemModel::ItemData*>::iterator end);