From b9b3bff424677a84cdd73fd34f7514c2f700e612 Mon Sep 17 00:00:00 2001 From: Anton Kudryavtsev Date: Mon, 27 Jun 2016 12:14:52 +0300 Subject: 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 Reviewed-by: Marc Mutz --- src/widgets/itemviews/qabstractitemview.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'src') 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::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; } -- cgit v1.2.3