From 89034600939bbfe241ba3d6136abf7bb6961db52 Mon Sep 17 00:00:00 2001 From: Anton Kudryavtsev Date: Mon, 15 Feb 2016 11:16:39 +0300 Subject: QtBase: use erase and std::remove_if with QList and QVector ... instead of using removeAt in a loop, with quadratic complexity. Change-Id: I38b49e56b12c396db9fc0f1b75d8fb43c503a7f6 Reviewed-by: Marc Mutz --- src/plugins/platforms/ios/qiosmenu.mm | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'src/plugins/platforms/ios') diff --git a/src/plugins/platforms/ios/qiosmenu.mm b/src/plugins/platforms/ios/qiosmenu.mm index 84707319d7..db1b5b8cc8 100644 --- a/src/plugins/platforms/ios/qiosmenu.mm +++ b/src/plugins/platforms/ios/qiosmenu.mm @@ -48,6 +48,9 @@ #include "qiosintegration.h" #include "qiostextresponder.h" +#include +#include + // m_currentMenu points to the currently visible menu. // Only one menu will be visible at a time, and if a second menu // is shown on top of a first, the first one will be told to hide. @@ -525,14 +528,10 @@ bool QIOSMenu::eventFilter(QObject *obj, QEvent *event) QIOSMenuItemList QIOSMenu::visibleMenuItems() const { - QIOSMenuItemList visibleMenuItems = m_menuItems; - - for (int i = visibleMenuItems.count() - 1; i >= 0; --i) { - QIOSMenuItem *item = visibleMenuItems.at(i); - if (!item->m_enabled || !item->m_visible || item->m_separator) - visibleMenuItems.removeAt(i); - } - + QIOSMenuItemList visibleMenuItems; + visibleMenuItems.reserve(m_menuItems.size()); + std::copy_if(m_menuItems.begin(), m_menuItems.end(), std::back_inserter(visibleMenuItems), + [](QIOSMenuItem *item) { return item->m_enabled && item->m_visible && !item->m_separator; }); return visibleMenuItems; } -- cgit v1.2.3