summaryrefslogtreecommitdiffstats
path: root/src/widgets/itemviews
diff options
context:
space:
mode:
authorAnton Kudryavtsev <a.kudryavtsev@netris.ru>2016-06-27 12:14:52 +0300
committerAnton Kudryavtsev <a.kudryavtsev@netris.ru>2016-06-29 07:51:20 +0000
commitb9b3bff424677a84cdd73fd34f7514c2f700e612 (patch)
tree8cfd07a44577709b31fc015976e6dee314cb06fd /src/widgets/itemviews
parenta8c98dcb89f2b3f8438555d8febe17d3542d0567 (diff)
QAbstractItemView: use erase and std::remove_if with QList
... instead of using erase() in a loop, with quadratic complexity. Change-Id: Id9c70a0d1d27b5057e5bf64c315bd66cbcd67330 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'src/widgets/itemviews')
-rw-r--r--src/widgets/itemviews/qabstractitemview.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp
index 26dd49f8cf..e67f8d83fb 100644
--- a/src/widgets/itemviews/qabstractitemview.cpp
+++ b/src/widgets/itemviews/qabstractitemview.cpp
@@ -2604,12 +2604,11 @@ QModelIndexList QAbstractItemView::selectedIndexes() const
QModelIndexList indexes;
if (d->selectionModel) {
indexes = d->selectionModel->selectedIndexes();
- QList<QModelIndex>::iterator it = indexes.begin();
- while (it != indexes.end())
- if (isIndexHidden(*it))
- it = indexes.erase(it);
- else
- ++it;
+ auto isHidden = [this](const QModelIndex &idx) {
+ return isIndexHidden(idx);
+ };
+ const auto end = indexes.end();
+ indexes.erase(std::remove_if(indexes.begin(), end, isHidden), end);
}
return indexes;
}