diff options
-rw-r--r-- | qmake/library/proitems.cpp | 3 | ||||
-rw-r--r-- | src/corelib/io/qresource.cpp | 3 | ||||
-rw-r--r-- | src/corelib/text/qstringlist.cpp | 3 | ||||
-rw-r--r-- | src/corelib/tools/qduplicatetracker_p.h | 8 | ||||
-rw-r--r-- | src/gui/text/unix/qfontconfigdatabase.cpp | 3 | ||||
-rw-r--r-- | src/tools/moc/moc.cpp | 2 | ||||
-rw-r--r-- | src/widgets/itemviews/qtreewidget.cpp | 3 | ||||
-rw-r--r-- | src/widgets/styles/qstylesheetstyle.cpp | 3 | ||||
-rw-r--r-- | tests/auto/corelib/tools/qduplicatetracker/tst_qduplicatetracker.cpp | 3 |
9 files changed, 16 insertions, 15 deletions
diff --git a/qmake/library/proitems.cpp b/qmake/library/proitems.cpp index ba817596c5..a8f4dfe039 100644 --- a/qmake/library/proitems.cpp +++ b/qmake/library/proitems.cpp @@ -404,8 +404,7 @@ void ProStringList::removeEmpty() void ProStringList::removeDuplicates() { - QDuplicateTracker<ProString> seen; - seen.reserve(size()); + QDuplicateTracker<ProString> seen(size()); removeIf([&](const ProString &s) { return seen.hasSeen(s); }); } diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp index 936218608b..864fb7a5d9 100644 --- a/src/corelib/io/qresource.cpp +++ b/src/corelib/io/qresource.cpp @@ -416,8 +416,7 @@ void QResourcePrivate::ensureChildren() const QString path = absoluteFilePath, k; if (path.startsWith(QLatin1Char(':'))) path = path.mid(1); - QDuplicateTracker<QString> kids; - kids.reserve(related.size()); + QDuplicateTracker<QString> kids(related.size()); QString cleaned = cleanPath(path); for (int i = 0; i < related.size(); ++i) { QResourceRoot *res = related.at(i); diff --git a/src/corelib/text/qstringlist.cpp b/src/corelib/text/qstringlist.cpp index 440e26bc89..c2eea609ea 100644 --- a/src/corelib/text/qstringlist.cpp +++ b/src/corelib/text/qstringlist.cpp @@ -648,8 +648,7 @@ qsizetype QtPrivate::QStringList_lastIndexOf(const QStringList *that, const QReg */ qsizetype QtPrivate::QStringList_removeDuplicates(QStringList *that) { - QDuplicateTracker<QString> seen; - seen.reserve(that->size()); + QDuplicateTracker<QString> seen(that->size()); return that->removeIf([&](const QString &s) { return seen.hasSeen(s); }); } diff --git a/src/corelib/tools/qduplicatetracker_p.h b/src/corelib/tools/qduplicatetracker_p.h index 7bc416140a..565d592ac2 100644 --- a/src/corelib/tools/qduplicatetracker_p.h +++ b/src/corelib/tools/qduplicatetracker_p.h @@ -106,6 +106,14 @@ class QDuplicateTracker { Q_DISABLE_COPY_MOVE(QDuplicateTracker); public: QDuplicateTracker() = default; + explicit QDuplicateTracker(qsizetype n) +#ifdef __cpp_lib_memory_resource + : set{size_t(n), &res} +#else + : set{n} +#endif + {} + Q_DECL_DEPRECATED_X("Pass the capacity to reserve() to the ctor instead.") void reserve(qsizetype n) { set.reserve(n); } [[nodiscard]] bool hasSeen(const T &s) { diff --git a/src/gui/text/unix/qfontconfigdatabase.cpp b/src/gui/text/unix/qfontconfigdatabase.cpp index c9f3c3cb81..ee9d323747 100644 --- a/src/gui/text/unix/qfontconfigdatabase.cpp +++ b/src/gui/text/unix/qfontconfigdatabase.cpp @@ -810,8 +810,7 @@ QStringList QFontconfigDatabase::fallbacksForFamily(const QString &family, QFont FcPatternDestroy(pattern); if (fontSet) { - QDuplicateTracker<QString> duplicates; - duplicates.reserve(fontSet->nfont + 1); + QDuplicateTracker<QString> duplicates(fontSet->nfont + 1); (void)duplicates.hasSeen(family.toCaseFolded()); for (int i = 0; i < fontSet->nfont; i++) { FcChar8 *value = nullptr; diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp index bce75644f5..d57e43b59d 100644 --- a/src/tools/moc/moc.cpp +++ b/src/tools/moc/moc.cpp @@ -1833,7 +1833,7 @@ void Moc::checkProperties(ClassDef *cdef) // specify get function, for compatibiliy we accept functions // returning pointers, or const char * for QByteArray. // - QDuplicateTracker<QByteArray> definedProperties; + QDuplicateTracker<QByteArray> definedProperties(cdef->propertyList.count()); for (int i = 0; i < cdef->propertyList.count(); ++i) { PropertyDef &p = cdef->propertyList[i]; if (definedProperties.hasSeen(p.name)) { diff --git a/src/widgets/itemviews/qtreewidget.cpp b/src/widgets/itemviews/qtreewidget.cpp index b684282e9d..b9af2ce8af 100644 --- a/src/widgets/itemviews/qtreewidget.cpp +++ b/src/widgets/itemviews/qtreewidget.cpp @@ -3101,8 +3101,7 @@ QList<QTreeWidgetItem*> QTreeWidget::selectedItems() const const QModelIndexList indexes = selectionModel()->selectedIndexes(); QList<QTreeWidgetItem*> items; items.reserve(indexes.count()); - QDuplicateTracker<QTreeWidgetItem *> seen; - seen.reserve(indexes.count()); + QDuplicateTracker<QTreeWidgetItem *> seen(indexes.count()); for (const auto &index : indexes) { QTreeWidgetItem *item = d->item(index); if (item->isHidden() || seen.hasSeen(item)) diff --git a/src/widgets/styles/qstylesheetstyle.cpp b/src/widgets/styles/qstylesheetstyle.cpp index 226c1ecbf9..74037eba19 100644 --- a/src/widgets/styles/qstylesheetstyle.cpp +++ b/src/widgets/styles/qstylesheetstyle.cpp @@ -2625,8 +2625,7 @@ void QStyleSheetStyle::setProperties(QWidget *w) { // scan decls for final occurrence of each "qproperty" - QDuplicateTracker<QString> propertySet; - propertySet.reserve(decls.size()); + QDuplicateTracker<QString> propertySet(decls.size()); for (int i = decls.count() - 1; i >= 0; --i) { const QString property = decls.at(i).d->property; if (!property.startsWith(QLatin1String("qproperty-"), Qt::CaseInsensitive)) diff --git a/tests/auto/corelib/tools/qduplicatetracker/tst_qduplicatetracker.cpp b/tests/auto/corelib/tools/qduplicatetracker/tst_qduplicatetracker.cpp index f4f038ca94..6462ef0dd7 100644 --- a/tests/auto/corelib/tools/qduplicatetracker/tst_qduplicatetracker.cpp +++ b/tests/auto/corelib/tools/qduplicatetracker/tst_qduplicatetracker.cpp @@ -168,8 +168,7 @@ size_t qHash(const ConstructionCounted &c, std::size_t seed = 0) void tst_QDuplicateTracker::appendTo_special() { - QDuplicateTracker<ConstructionCounted> tracker; - tracker.reserve(3); + QDuplicateTracker<ConstructionCounted> tracker(3); QVERIFY(!tracker.hasSeen(1)); QVERIFY(!tracker.hasSeen(2)); QVERIFY(!tracker.hasSeen(3)); |