diff options
author | Anton Kudryavtsev <a.kudryavtsev@netris.ru> | 2016-06-27 12:14:52 +0300 |
---|---|---|
committer | Anton Kudryavtsev <a.kudryavtsev@netris.ru> | 2016-06-29 07:51:20 +0000 |
commit | b9b3bff424677a84cdd73fd34f7514c2f700e612 (patch) | |
tree | 8cfd07a44577709b31fc015976e6dee314cb06fd | |
parent | a8c98dcb89f2b3f8438555d8febe17d3542d0567 (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>
-rw-r--r-- | src/widgets/itemviews/qabstractitemview.cpp | 11 |
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; } |