QMultiHash Class

template <typename Key, typename T> class QMultiHash

Die Klasse QMultiHash ist eine bequeme Unterklasse von QHash, die mehrwertige Hashes bereitstellt. Mehr...

Header: #include <QMultiHash>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Hinweis: Alle Funktionen in dieser Klasse sind reentrant.

Öffentliche Typen

Öffentliche Funktionen

QMultiHash()
QMultiHash(const QHash<Key, T> &other)
QMultiHash(std::initializer_list<std::pair<Key, T>> list)
QMultiHash(InputIterator begin, InputIterator end)
(since 6.4) auto asKeyValueRange() &&
(since 6.4) auto asKeyValueRange() &
(since 6.4) auto asKeyValueRange() const &&
(since 6.4) auto asKeyValueRange() const &
QMultiHash<Key, T>::iterator begin()
QMultiHash<Key, T>::const_iterator begin() const
QMultiHash<Key, T>::const_iterator cbegin() const
QMultiHash<Key, T>::const_iterator cend() const
void clear()
QMultiHash<Key, T>::const_iterator constBegin() const
QMultiHash<Key, T>::const_iterator constEnd() const
QMultiHash<Key, T>::const_iterator constFind(const Key &key, const T &value) const
QMultiHash<Key, T>::const_key_value_iterator constKeyValueBegin() const
QMultiHash<Key, T>::const_key_value_iterator constKeyValueEnd() const
bool contains(const Key &key, const T &value) const
qsizetype count(const Key &key, const T &value) const
QMultiHash<Key, T>::iterator emplace(Key &&key, Args &&... args)
QMultiHash<Key, T>::iterator emplace(const Key &key, Args &&... args)
QMultiHash<Key, T>::iterator emplaceReplace(Key &&key, Args &&... args)
QMultiHash<Key, T>::iterator emplaceReplace(const Key &key, Args &&... args)
QMultiHash<Key, T>::iterator end()
QMultiHash<Key, T>::const_iterator end() const
std::pair<QMultiHash<Key, T>::iterator, QMultiHash<Key, T>::iterator> equal_range(const Key &key)
std::pair<QMultiHash<Key, T>::const_iterator, QMultiHash<Key, T>::const_iterator> equal_range(const Key &key) const
QMultiHash<Key, T>::iterator find(const Key &key, const T &value)
QMultiHash<Key, T>::const_iterator find(const Key &key, const T &value) const
QMultiHash<Key, T>::iterator insert(const Key &key, const T &value)
Key key(const T &value) const
Key key(const T &value, const Key &defaultKey) const
QMultiHash<Key, T>::key_iterator keyBegin() const
QMultiHash<Key, T>::key_iterator keyEnd() const
QMultiHash<Key, T>::key_value_iterator keyValueBegin()
QMultiHash<Key, T>::const_key_value_iterator keyValueBegin() const
QMultiHash<Key, T>::key_value_iterator keyValueEnd()
QMultiHash<Key, T>::const_key_value_iterator keyValueEnd() const
QList<Key> keys() const
qsizetype remove(const Key &key)
qsizetype remove(const Key &key, const T &value)
(since 6.1) qsizetype removeIf(Predicate pred)
QMultiHash<Key, T>::iterator replace(const Key &key, const T &value)
void swap(QMultiHash<Key, T> &other)
T take(const Key &key)
QList<Key> uniqueKeys() const
(since 6.0) QMultiHash<Key, T> &unite(const QHash<Key, T> &other)
QMultiHash<Key, T> &unite(const QMultiHash<Key, T> &other)
T value(const Key &key) const
T value(const Key &key, const T &defaultValue) const
QList<T> values() const
QList<T> values(const Key &key) const
QMultiHash<Key, T> operator+(const QMultiHash<Key, T> &other) const
QMultiHash<Key, T> &operator+=(const QMultiHash<Key, T> &other)
T &operator[](const Key &key)
(since 6.1) qsizetype erase_if(QMultiHash<Key, T> &hash, Predicate pred)
size_t qHash(const QMultiHash<Key, T> &key, size_t seed = 0)
QDataStream &operator<<(QDataStream &out, const QMultiHash<Key, T> &hash)
QDataStream &operator>>(QDataStream &in, QMultiHash<Key, T> &hash)

Detaillierte Beschreibung

QMultiHash<Key, T> ist eine der generischen Container-Klassen von Qt. Sie erbt QHash und erweitert sie um einige Komfortfunktionen, die sie für die Speicherung von mehrwertigen Hashes besser geeignet machen als QHash. Ein mehrwertiger Hash ist ein Hash, der mehrere Werte mit demselben Schlüssel zulässt.

QMultiHash spiegelt größtenteils die API von QHash wider. Sie können zum Beispiel isEmpty() verwenden, um zu prüfen, ob der Hash leer ist, und Sie können einen QMultiHash mit den Iterator-Klassen von QHash durchlaufen (z. B. QHashIterator). Im Gegensatz zu QHash bietet es jedoch eine Funktion insert(), die das Einfügen mehrerer Elemente mit demselben Schlüssel ermöglicht. Die Funktion replace() entspricht der Funktion QHash::insert(). Sie bietet auch die praktischen Funktionen operator+() und operator+=().

Im Gegensatz zu QMultiMap bietet QMultiHash keine Ordnung der eingefügten Elemente. Die einzige Garantie ist, dass Elemente, die denselben Schlüssel haben, nacheinander erscheinen, vom zuletzt eingefügten bis zum zuletzt eingefügten Wert.

Beispiel:

QMultiHash<QString, int> hash1, hash2, hash3;

hash1.insert("plenty", 100);
hash1.insert("plenty", 2000);
// hash1.size() == 2

hash2.insert("plenty", 5000);
// hash2.size() == 1

hash3 = hash1 + hash2;
// hash3.size() == 3

Im Gegensatz zu QHash bietet QMultiHash keinen Operator[]. Verwenden Sie value() oder replace(), wenn Sie auf das zuletzt eingefügte Element mit einem bestimmten Schlüssel zugreifen möchten.

Wenn Sie alle Werte für einen einzelnen Schlüssel abrufen wollen, können Sie values(const Key &key) verwenden, das ein QList<T> zurückgibt:

QList<int> values = hash.values("plenty");
for (auto i : std::as_const(values))
    cout << i << endl;

Die Elemente, die denselben Schlüssel haben, sind von den zuletzt eingefügten bis zu den am wenigsten eingefügten verfügbar.

Ein effizienterer Ansatz ist der Aufruf von find(), um den STL-Iterator für das erste Element mit einem Schlüssel zu erhalten und von dort aus zu iterieren:

auto i = hash.constFind("plenty");
while (i != hash.cend() && i.key() == "plenty") {
    cout << i.value() << endl;
    ++i;
}

Die Schlüssel- und Wertdatentypen von QMultiHash müssen zuweisbare Datentypen sein. Sie können z. B. nicht QWidget als Wert speichern; speichern Sie stattdessen ein QWidget *. Darüber hinaus muss der Schlüsseltyp von QMultiHash operator==() bereitstellen, und es muss eine qHash()-Funktion im Namensraum des Typs vorhanden sein, die einen Hash-Wert für ein Argument vom Typ des Schlüssels zurückgibt. Siehe die QHash Dokumentation für Details.

Siehe auch QHash, QHashIterator, QMutableHashIterator, und QMultiMap.

Dokumentation der Mitgliedstypen

QMultiHash::const_key_value_iterator

Der QMultiHash::const_key_value_iterator Typedef bietet einen STL-ähnlichen konstanten Iterator für QMultiHash.

QMultiHash::const_key_value_iterator ist im Wesentlichen dasselbe wie QMultiHash::const_iterator mit dem Unterschied, dass operator*() ein Schlüssel/Wert-Paar statt eines Wertes zurückgibt.

Siehe auch QKeyValueIterator.

QMultiHash::key_value_iterator

Der QMultiHash::key_value_iterator-Typ bietet einen STL-artigen Iterator für QMultiHash.

QMultiHash::key_value_iterator ist im Wesentlichen dasselbe wie QMultiHash::iterator mit dem Unterschied, dass operator*() ein Schlüssel/Wert-Paar statt eines Wertes zurückgibt.

Siehe auch QKeyValueIterator.

Dokumentation der Mitgliedsfunktionen

template <typename... Args> QMultiHash<Key, T>::iterator QMultiHash::emplace(Key &&key, Args &&... args)

template <typename... Args> QMultiHash<Key, T>::iterator QMultiHash::emplace(const Key &key, Args &&... args)

Fügt ein neues Element in den Container ein. Dieses neue Element wird an Ort und Stelle konstruiert, wobei args als Argumente für seine Konstruktion verwendet werden.

Wenn bereits ein Element mit demselben Schlüssel im Hash vorhanden ist, wird mit dieser Funktion einfach ein neues Element erstellt. (Dieses Verhalten unterscheidet sich von replace(), das den Wert eines vorhandenen Elements überschreibt).

Gibt einen Iterator zurück, der auf das neue Element zeigt.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen, oder wenn der Hash zerstört wird.

Siehe auch insert.

template <typename... Args> QMultiHash<Key, T>::iterator QMultiHash::emplaceReplace(Key &&key, Args &&... args)

template <typename... Args> QMultiHash<Key, T>::iterator QMultiHash::emplaceReplace(const Key &key, Args &&... args)

Fügt ein neues Element in den Container ein. Dieses neue Element wird an Ort und Stelle konstruiert, wobei args als Argumente für seine Konstruktion verwendet werden.

Wenn es bereits ein Element mit demselben Schlüssel im Hash gibt, wird der Wert dieses Elements durch einen aus args konstruierten Wert ersetzt.

Gibt einen Iterator zurück, der auf das neue Element zeigt.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen oder wenn der Hash zerstört wird.

Siehe auch replace und emplace.

[noexcept] T QMultiHash::value(const Key &key) const

[noexcept] T QMultiHash::value(const Key &key, const T &defaultValue) const

Gibt den mit key verbundenen Wert zurück.

Enthält der Hash kein Element mit der Bezeichnung key, gibt die Funktion defaultValue zurück oder einen standardmäßig konstruierten Wert, wenn dieser Parameter nicht angegeben wurde.

Gibt es mehrere Elemente für key im Hash, wird der Wert des zuletzt eingefügten zurückgegeben.

[noexcept] Key QMultiHash::key(const T &value) const

[noexcept] Key QMultiHash::key(const T &value, const Key &defaultKey) const

Gibt den ersten Schlüssel zurück, der value zugeordnet ist. Enthält der Hash kein Element, das value zugeordnet ist, wird defaultKey zurückgegeben, oder ein standardmäßig konstruierter Schlüssel, wenn dieser Parameter nicht übergeben wurde.

Diese Funktion kann langsam sein(lineare Zeit), da die interne Datenstruktur von QMultiHash für die schnelle Suche nach dem Schlüssel und nicht nach dem Wert optimiert ist.

[since 6.4] auto QMultiHash::asKeyValueRange() &

[since 6.4] auto QMultiHash::asKeyValueRange() &&

[since 6.4] auto QMultiHash::asKeyValueRange() const &

[since 6.4] auto QMultiHash::asKeyValueRange() const &&

Gibt ein Bereichsobjekt zurück, das die Iteration über diesen Hash als Schlüssel/Wert-Paare ermöglicht. Dieses Bereichsobjekt kann zum Beispiel in einer bereichsbasierten for-Schleife in Kombination mit einer strukturierten Bindungsdeklaration verwendet werden:

QMultiHash<QString, int> hash;
hash.insert("January", 1);
hash.insert("February", 2);
// ...
hash.insert("December", 12);

for (auto [key, value] : hash.asKeyValueRange()) {
    cout << qPrintable(key) << ": " << value << endl;
    --value; // convert to JS month indexing
}

Beachten Sie, dass sowohl der Schlüssel als auch der Wert, die auf diese Weise erhalten werden, Verweise auf die im Hash enthaltenen Werte sind. Insbesondere wird durch die Änderung des Wertes der Hash selbst geändert.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen, oder wenn der Hash zerstört wird.

Diese Funktion wurde in Qt 6.4 eingeführt.

Siehe auch QKeyValueIterator.

[noexcept] QMultiHash::QMultiHash()

Konstruiert einen leeren Hash.

[explicit] QMultiHash::QMultiHash(const QHash<Key, T> &other)

Konstruiert eine Kopie von other (das ein QHash oder ein QMultiHash sein kann).

QMultiHash::QMultiHash(std::initializer_list<std::pair<Key, T>> list)

Konstruiert einen Multi-Hash mit einer Kopie von jedem der Elemente in der Initialisierungsliste list.

template <typename InputIterator> QMultiHash::QMultiHash(InputIterator begin, InputIterator end)

Konstruiert einen Multi-Hash mit einer Kopie von jedem der Elemente im Iteratorbereich [begin, end). Entweder müssen die Elemente, die durch den Bereich iteriert werden, Objekte mit den Datenelementen first und second (wie std::pair) sein, die in Key bzw. T konvertierbar sind; oder die Iteratoren müssen über die Mitgliederfunktionen key() und value() verfügen, die einen in Key konvertierbaren Schlüssel bzw. einen in T konvertierbaren Wert zurückgeben.

QMultiHash<Key, T>::iterator QMultiHash::begin()

Gibt einen Iterator im STL-Stil zurück, der auf das erste Element des Hashes zeigt.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen, oder wenn der Hash zerstört wird.

Siehe auch constBegin() und end().

[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::begin() const

Dies ist eine überladene Funktion.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen, oder wenn der Hash zerstört wird.

[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::cbegin() const

Gibt einen Iterator im Stil von const STL zurück, der auf das erste Element des Hashes zeigt.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen oder wenn der Hash zerstört wird.

Siehe auch begin() und cend().

[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::cend() const

Gibt einen const STL-artigen Iterator zurück, der auf das imaginäre Element nach dem letzten Element im Hash zeigt.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen, oder wenn der Hash zerstört wird.

Siehe auch cbegin() und end().

[noexcept(...)] void QMultiHash::clear()

Entfernt alle Elemente aus dem Hash und gibt den gesamten von ihm verwendeten Speicher frei.

Hinweis: Diese Funktion ist noexcept, wenn std::is_nothrow_destructible<Node>::value true ist.

Siehe auch remove().

[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::constBegin() const

Gibt einen Iterator im Stil von const STL zurück, der auf das erste Element des Hashes zeigt.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen oder wenn der Hash zerstört wird.

Siehe auch begin() und constEnd().

[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::constEnd() const

Gibt einen const STL-artigen Iterator zurück, der auf das imaginäre Element nach dem letzten Element im Hash zeigt.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen, oder wenn der Hash zerstört wird.

Siehe auch constBegin() und end().

[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::constFind(const Key &key, const T &value) const

Gibt einen Iterator zurück, der auf das Element mit dem key und dem value im Hash zeigt.

Wenn der Hash kein solches Element enthält, gibt die Funktion constEnd() zurück.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen oder wenn der Hash zerstört wird.

[noexcept] QMultiHash<Key, T>::const_key_value_iterator QMultiHash::constKeyValueBegin() const

Gibt einen const STL-artigen Iterator zurück, der auf den ersten Eintrag im Hash zeigt.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen oder wenn der Hash zerstört wird.

Siehe auch keyValueBegin().

[noexcept] QMultiHash<Key, T>::const_key_value_iterator QMultiHash::constKeyValueEnd() const

Gibt einen const STL-artigen Iterator zurück, der auf den imaginären Eintrag nach dem letzten Eintrag im Hash zeigt.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen, oder wenn der Hash zerstört wird.

Siehe auch constKeyValueBegin().

[noexcept] bool QMultiHash::contains(const Key &key, const T &value) const

Gibt true zurück, wenn der Hash ein Element mit dem key und value enthält; andernfalls wird false zurückgegeben.

Siehe auch contains().

[noexcept] qsizetype QMultiHash::count(const Key &key, const T &value) const

Liefert die Anzahl der Elemente mit dem key und value.

Siehe auch count().

[noexcept] QMultiHash<Key, T>::iterator QMultiHash::end()

Gibt einen Iterator im STL-Stil zurück, der auf das imaginäre Element nach dem letzten Element im Hash zeigt.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen, oder wenn der Hash zerstört wird.

Siehe auch begin() und constEnd().

[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::end() const

Dies ist eine überladene Funktion.

std::pair<QMultiHash<Key, T>::iterator, QMultiHash<Key, T>::iterator> QMultiHash::equal_range(const Key &key)

Gibt ein Paar von Iteratoren zurück, die den Bereich der Werte [first, second) begrenzen, die unter key gespeichert sind. Wenn der Bereich leer ist, sind beide Iteratoren gleich end().

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen oder wenn der Hash zerstört wird.

[noexcept] std::pair<QMultiHash<Key, T>::const_iterator, QMultiHash<Key, T>::const_iterator> QMultiHash::equal_range(const Key &key) const

Dies ist eine überladene Funktion.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen, oder wenn der Hash zerstört wird.

QMultiHash<Key, T>::iterator QMultiHash::find(const Key &key, const T &value)

Gibt einen Iterator zurück, der auf das Element mit den Bezeichnungen key und value zeigt. Enthält der Hash kein solches Element, gibt die Funktion end() zurück.

Enthält der Hash mehrere Einträge mit den Kennzeichnungen key und value, zeigt der zurückgegebene Iterator auf den zuletzt eingefügten Eintrag.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen oder wenn der Hash zerstört wird.

[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::find(const Key &key, const T &value) const

Dies ist eine überladene Funktion.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen, oder wenn der Hash zerstört wird.

QMultiHash<Key, T>::iterator QMultiHash::insert(const Key &key, const T &value)

Fügt ein neues Element mit der Adresse key und einem Wert von value ein.

Wenn bereits ein Element mit demselben Schlüssel im Hash vorhanden ist, wird mit dieser Funktion einfach ein neues Element erstellt. (Dieses Verhalten unterscheidet sich von replace(), das den Wert eines vorhandenen Elements überschreibt).

Gibt einen Iterator zurück, der auf das neue Element zeigt.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen, oder wenn der Hash zerstört wird.

Siehe auch replace().

[noexcept] QMultiHash<Key, T>::key_iterator QMultiHash::keyBegin() const

Gibt einen const STL-artigen Iterator zurück, der auf den ersten Schlüssel im Hash zeigt.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen, oder wenn der Hash zerstört wird.

Siehe auch keyEnd().

[noexcept] QMultiHash<Key, T>::key_iterator QMultiHash::keyEnd() const

Gibt einen const STL-artigen Iterator zurück, der auf das imaginäre Element nach dem letzten Schlüssel im Hash zeigt.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen, oder wenn der Hash zerstört wird.

Siehe auch keyBegin().

[noexcept] QMultiHash<Key, T>::key_value_iterator QMultiHash::keyValueBegin()

Gibt einen Iterator im STL-Stil zurück, der auf den ersten Eintrag im Hash zeigt.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen, oder wenn der Hash zerstört wird.

Siehe auch keyValueEnd().

[noexcept] QMultiHash<Key, T>::const_key_value_iterator QMultiHash::keyValueBegin() const

Gibt einen const STL-artigen Iterator zurück, der auf den ersten Eintrag im Hash zeigt.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen oder wenn der Hash zerstört wird.

Siehe auch keyValueEnd().

[noexcept] QMultiHash<Key, T>::key_value_iterator QMultiHash::keyValueEnd()

Gibt einen Iterator im STL-Stil zurück, der auf den imaginären Eintrag nach dem letzten Eintrag im Hash zeigt.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen, oder wenn der Hash zerstört wird.

Siehe auch keyValueBegin().

[noexcept] QMultiHash<Key, T>::const_key_value_iterator QMultiHash::keyValueEnd() const

Gibt einen const STL-artigen Iterator zurück, der auf den imaginären Eintrag nach dem letzten Eintrag im Hash zeigt.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen, oder wenn der Hash zerstört wird.

Siehe auch keyValueBegin().

QList<Key> QMultiHash::keys() const

Gibt eine Liste zurück, die alle Schlüssel des Hashes in beliebiger Reihenfolge enthält. Schlüssel, die mehrfach im Hash vorkommen, kommen auch mehrfach in der Liste vor.

Die Reihenfolge ist garantiert dieselbe wie die von values() verwendete.

Diese Funktion erstellt eine neue Liste in linearer Zeit. Der damit verbundene Zeit- und Speicherbedarf kann durch Iteration von keyBegin() zu keyEnd() vermieden werden.

Siehe auch values() und key().

qsizetype QMultiHash::remove(const Key &key)

Entfernt alle Elemente, die die Adresse key haben, aus dem Hash. Gibt die Anzahl der entfernten Elemente zurück.

Siehe auch remove().

qsizetype QMultiHash::remove(const Key &key, const T &value)

Entfernt alle Elemente, die den key und den Wert value haben, aus dem Hash. Gibt die Anzahl der entfernten Elemente zurück.

Siehe auch remove().

[since 6.1] template <typename Predicate> qsizetype QMultiHash::removeIf(Predicate pred)

Entfernt alle Elemente, für die das Prädikat pred wahr ergibt, aus dem Multi-Hash.

Die Funktion unterstützt Prädikate, die entweder ein Argument vom Typ QMultiHash<Key, T>::iterator oder ein Argument vom Typ std::pair<const Key &, T &> annehmen.

Gibt die Anzahl der entfernten Elemente zurück, falls vorhanden.

Diese Funktion wurde in Qt 6.1 eingeführt.

Siehe auch clear() und take().

QMultiHash<Key, T>::iterator QMultiHash::replace(const Key &key, const T &value)

Fügt ein neues Element mit der Bezeichnung key und einem Wert von value ein.

Wenn es bereits ein Element mit der Bezeichnung key gibt, wird der Wert dieses Elements durch value ersetzt.

Wenn es mehrere Elemente mit dem Wert key gibt, wird der Wert des zuletzt eingefügten Elements durch value ersetzt.

Gibt einen Iterator zurück, der auf das neue/aktualisierte Element zeigt.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen, oder wenn der Hash zerstört wird.

Siehe auch insert().

[noexcept] void QMultiHash::swap(QMultiHash<Key, T> &other)

Tauscht diesen Multi-Hash mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.

T QMultiHash::take(const Key &key)

Entfernt das Element mit der Adresse key aus dem Hash und gibt den damit verbundenen Wert zurück.

Wenn das Element im Hash nicht vorhanden ist, gibt die Funktion einfach einen standardmäßig konstruierten Wert zurück. Wenn mehrere Elemente für key im Hash vorhanden sind, wird nur das zuletzt eingefügte entfernt.

Wenn Sie den Rückgabewert nicht verwenden, ist remove() effizienter.

Siehe auch remove().

QList<Key> QMultiHash::uniqueKeys() const

Gibt eine Liste mit allen Schlüsseln in der Map zurück. Schlüssel, die mehrfach in der Map vorkommen, erscheinen nur einmal in der zurückgegebenen Liste.

Siehe auch keys() und values().

[since 6.0] QMultiHash<Key, T> &QMultiHash::unite(const QHash<Key, T> &other)

Fügt alle Elemente des Hashes other in diesen Hash ein und gibt eine Referenz auf diesen Hash zurück.

Diese Funktion wurde in Qt 6.0 eingeführt.

Siehe auch insert().

QMultiHash<Key, T> &QMultiHash::unite(const QMultiHash<Key, T> &other)

Fügt alle Elemente des Hashes other in diesen Hash ein und gibt einen Verweis auf diesen Hash zurück.

Siehe auch insert().

QList<T> QMultiHash::values() const

Gibt eine Liste zurück, die alle Werte des Hashes in beliebiger Reihenfolge enthält. Wenn ein Schlüssel mit mehreren Werten verknüpft ist, werden alle seine Werte in der Liste aufgeführt, nicht nur der zuletzt eingefügte Wert.

Die Reihenfolge ist garantiert dieselbe wie die von keys() verwendete.

Diese Funktion erstellt eine neue Liste in linearer Zeit. Der damit verbundene Zeit- und Speicherbedarf kann durch Iteration von keyValueBegin() zu keyValueEnd() vermieden werden.

Siehe auch keys() und value().

QList<T> QMultiHash::values(const Key &key) const

Dies ist eine überladene Funktion.

Gibt eine Liste aller mit key verbundenen Werte zurück, vom zuletzt eingefügten bis zum zuletzt eingefügten Wert.

Siehe auch count() und insert().

QMultiHash<Key, T> QMultiHash::operator+(const QMultiHash<Key, T> &other) const

Gibt einen Hash zurück, der alle Elemente in diesem Hash zusätzlich zu allen Elementen in other enthält. Wenn ein Schlüssel in beiden Hashes vorkommt, enthält der resultierende Hash den Schlüssel mehrfach.

Siehe auch operator+=().

QMultiHash<Key, T> &QMultiHash::operator+=(const QMultiHash<Key, T> &other)

Fügt alle Elemente des Hashes other in diesen Hash ein und gibt einen Verweis auf diesen Hash zurück.

Siehe auch unite() und insert().

T &QMultiHash::operator[](const Key &key)

Gibt den mit key verbundenen Wert als veränderbaren Verweis zurück.

Enthält der Hash kein Element mit der Bezeichnung key, fügt die Funktion einen standardmäßig konstruierten Wert in den Hash mit der Bezeichnung key ein und gibt einen Verweis auf diesen zurück.

Wenn der Hash mehrere Elemente mit der key enthält, gibt diese Funktion einen Verweis auf den zuletzt eingefügten Wert zurück.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, wenn Sie das nächste Mal eine nicht-konstante Funktion auf dem Hash aufrufen oder wenn der Hash zerstört wird.

Siehe auch insert() und value().

Verwandte Nicht-Mitglieder

[since 6.1] template <typename Key, typename T, typename Predicate> qsizetype erase_if(QMultiHash<Key, T> &hash, Predicate pred)

Entfernt alle Elemente, für die das Prädikat pred den Wert true liefert, aus dem Multi-Hash hash.

Die Funktion unterstützt Prädikate, die entweder ein Argument vom Typ QMultiHash<Key, T>::iterator oder ein Argument vom Typ std::pair<const Key &, T &> annehmen.

Gibt die Anzahl der entfernten Elemente zurück, falls vorhanden.

Diese Funktion wurde in Qt 6.1 eingeführt.

[noexcept(...)] template <typename Key, typename T> size_t qHash(const QMultiHash<Key, T> &key, size_t seed = 0)

Gibt den Hash-Wert für key zurück, wobei seed als Startwert für die Berechnung verwendet wird.

Die Typen Key und T müssen von qHash() unterstützt werden.

Hinweis: Diese Funktion ist noexcept, wenn noexcept(qHash(std::declval<Key&>())) && noexcept(qHash(std::declval<T&>())) true ist.

template <typename Key, typename T> QDataStream &operator<<(QDataStream &out, const QMultiHash<Key, T> &hash)

Schreibt den Hash hash in den Stream out.

Diese Funktion erfordert die Implementierung der Schlüssel- und Werttypen operator<<().

Siehe auch Serialisierung von Qt-Datentypen.

template <typename Key, typename T> QDataStream &operator>>(QDataStream &in, QMultiHash<Key, T> &hash)

Liest einen Hash aus dem Stream in in hash.

Für diese Funktion müssen die Schlüssel- und Werttypen operator>>() implementiert werden.

Siehe auch Serialisierung von Qt-Datentypen.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.