diff --git a/src/corelib/kernel/qmimedata.cpp b/src/corelib/kernel/qmimedata.cpp index fca258c9e3d..c38dab3e3f7 100644 --- a/src/corelib/kernel/qmimedata.cpp +++ b/src/corelib/kernel/qmimedata.cpp @@ -72,40 +72,44 @@ public: QVariant retrieveTypedData(const QString &format, QMetaType::Type type) const; - QVector dataList; + std::vector::iterator find(const QString &format) noexcept { + const auto formatEquals = [](const QString &format) { + return [&format](const QMimeDataStruct &s) { return s.format == format; }; + }; + return std::find_if(dataList.begin(), dataList.end(), formatEquals(format)); + } + + std::vector::const_iterator find(const QString &format) const noexcept { + return const_cast(this)->find(format); + } + + std::vector dataList; }; void QMimeDataPrivate::removeData(const QString &format) { - for (int i=0; idata = data; } QVariant QMimeDataPrivate::getData(const QString &format) const { - QVariant data; - for (int i=0; idata; } QVariant QMimeDataPrivate::retrieveTypedData(const QString &format, QMetaType::Type type) const @@ -635,10 +639,9 @@ QStringList QMimeData::formats() const { Q_D(const QMimeData); QStringList list; - const int size = d->dataList.size(); - list.reserve(size); - for (int i = 0; i < size; ++i) - list += d->dataList.at(i).format; + list.reserve(static_cast(d->dataList.size())); + for (auto &e : d->dataList) + list += e.format; return list; }