Auf dieser Seite

QMultiHash Class

template <typename Key, typename T> class QMultiHash

Die Klasse „QMultiHash“ stellt eine mehrwertige Hash-Tabelle bereit. Mehr...

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

Hinweis: Alle Funktionen dieser Klasse sind reentrant.

QMultiHash-Vergleiche

KategorieVergleichbare Typen
GleichheitQMultiHash

Ö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 erase(QMultiHash<Key, T>::const_iterator pos)
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)
(since 6.11) QMultiHash<Key, T>::iterator insert(Key &&key, T &&value)
(since 6.11) QMultiHash<Key, T>::iterator insert(Key &&key, const T &value)
(since 6.11) QMultiHash<Key, T>::iterator insert(const Key &key, 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)
bool operator!=(const QMultiHash<Key, T> &lhs, const QMultiHash<Key, T> &rhs)
QDataStream &operator<<(QDataStream &out, const QMultiHash<Key, T> &hash)
bool operator==(const QMultiHash<Key, T> &lhs, const QMultiHash<Key, T> &rhs)
QDataStream &operator>>(QDataStream &in, QMultiHash<Key, T> &hash)

Ausführliche Beschreibung

QMultiHash<KEY, T> ist eine der generischen Containerklassen von Qt, wobei Key der Typ für Suchschlüssel und T der Typ der zugeordneten Werte ist. Sie stellt eine Hash-Tabelle bereit, die mehrere Werte für denselben Schlüssel zulässt.

QMultiHash spiegelt größtenteils die API von ` QHash` wider. So können Sie beispielsweise mit `isEmpty()` prüfen, ob die Hash-Tabelle leer ist, und einen `QMultiHash` mithilfe der 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 „ QHash::insert()“. Außerdem stehen die praktischen Operatoren „operator+()“ und „operator+=()“ zur Verfügung.

Im Gegensatz zu „ QMultiMap “ bietet „QMultiHash“ keine Reihenfolge der eingefügten Elemente. Es wird lediglich garantiert, dass Elemente mit demselben Schlüssel nacheinander erscheinen, beginnend mit dem zuletzt eingefügten Wert bis hin zum am längsten zurückliegenden.

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 `[]` an. 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 möchten, können Sie `values(const Key &key)` verwenden, was ein ` QList<T>` zurückgibt:

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

Die Elemente mit demselben Schlüssel sind in der Reihenfolge vom zuletzt bis zum am wenigsten kürzlich eingefügten Element verfügbar.

Ein effizienterer Ansatz besteht darin, ` find()` aufzurufen, um den Iterator im STL-Stil für das erste Element mit einem bestimmten 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. Man kann beispielsweise kein ` QWidget ` als Wert speichern; stattdessen muss ein ` QWidget *` gespeichert werden. Außerdem muss der Schlüsseltyp von `QMultiHash` den Operator `==()` bereitstellen, und es muss im Namensraum des Typs eine Funktion ` qHash()` vorhanden sein, die einen Hash-Wert für ein Argument vom Typ des Schlüssels zurückgibt. Weitere Informationen finden Sie in der Dokumentation unter „ QHash “.

Siehe auch QHash, QHashIterator, QMutableHashIterator und QMultiMap.

Dokumentation zu Mitgliedstypen

QMultiHash::const_key_value_iterator

Der Typdefinitionsbezeichner `QMultiHash::const_key_value_iterator` stellt einen const-Iterator im STL-Stil für ` QMultiHash` bereit.

`QMultiHash::const_key_value_iterator` entspricht im Wesentlichen ` QMultiHash::const_iterator `, mit dem Unterschied, dass der Operator `*()` anstelle eines Werts ein Schlüssel-Wert-Paar zurückgibt.

Siehe auch ` QKeyValueIterator`.

QMultiHash::key_value_iterator

Der Typedef „QMultiHash::key_value_iterator“ stellt einen Iterator im STL-Stil für „ QMultiHash “ bereit.

`QMultiHash::key_value_iterator` entspricht im Wesentlichen ` QMultiHash::iterator `, mit dem Unterschied, dass der Operator `*()` ein Schlüssel-Wert-Paar anstelle eines einzelnen Werts zurückgibt.

Siehe auch „ QKeyValueIterator “.

Dokumentation zu den Mitgliedsfunktionen

[noexcept default] QMultiHash::QMultiHash()

Erstellt ein leeres Hash-Objekt.

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

Erstellt eine Kopie von „ other “ (bei dem es sich um ein „ QHash “ oder ein „QMultiHash“ handeln kann).

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

Erstellt einen Multi-Hash mit einer Kopie jedes Elements aus der Initialisierungsliste „ list “.

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

Erstellt einen Multi-Hash mit einer Kopie jedes Elements im Iteratorbereich [begin, end). Entweder müssen die Elemente, über die der Bereich iteriert wird, Objekte mit den Datenelementen ` first ` und ` second ` (wie z. B. ` std::pair`) sein, die jeweils in ` Key ` bzw. ` T ` konvertierbar sind; oder die Iteratoren müssen die Mitgliedsfunktionen ` key() ` und ` value() ` besitzen, die jeweils einen Schlüssel zurückgeben, der in ` Key ` konvertierbar ist, sowie einen Wert, der in ` T ` konvertierbar 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 beispielsweise 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 abgerufen werden, Referenzen auf die entsprechenden Elemente im Hash sind. Das bedeutet insbesondere, dass eine Änderung des Werts den Hash selbst verändert.

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

Diese Funktionen wurden in Qt 6.4 eingeführt.

Siehe auch QKeyValueIterator.

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

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

Warnung: Diezurückgegebenen Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald Sie das nächste Mal eine nicht-konstante Funktion für den Hash aufrufen oder wenn der Hash zerstört wird.

Siehe auch ` constBegin()` und ` end()`.

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

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

Dies ist eine überladene Funktion.

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

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

Warnung: Diezurückgegebenen Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald Sie das nächste Mal eine nicht-konstante Funktion für den 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 konstanten Iterator im STL-Stil zurück, der auf das imaginäre Element nach dem letzten Element im Hash zeigt.

Warnung: Diezurückgegebenen Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald Sie das nächste Mal eine nicht-konstante Funktion für den 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 belegten Speicher frei.

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

Siehe auch ` remove()`.

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

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

Warnung: Diezurückgegebenen Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald Sie das nächste Mal eine nicht-konstante Funktion für den 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 konstanten Iterator im STL-Stil zurück, der auf das imaginäre Element nach dem letzten Element im Hash zeigt.

Warnung: Diezurückgegebenen Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald Sie das nächste Mal eine nicht-konstante Funktion für den 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 im Hash verweist, das den Wert „ key “ und den Wert „ value “ enthält.

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

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald 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 konstanten Iterator im STL-Stil zurück, der auf den ersten Eintrag im Hash zeigt.

Warnung: Diezurückgegebenen Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald Sie das nächste Mal eine nicht-konstante Funktion für den 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 konstanten Iterator im STL-Stil zurück, der auf den imaginären Eintrag nach dem letzten Eintrag im Hash zeigt.

Warnung: Diezurückgegebenen Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald Sie das nächste Mal eine nicht-konstante Funktion für den 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 den Schlüsseln „ key “ und „ value “ enthält; andernfalls wird „ false “ zurückgegeben.

Siehe auch count().

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

Gibt die Anzahl der Einträge zurück, die die Bedingungen „ key “ und „ value “ erfüllen.

Siehe auch contains().

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 unter Verwendung von ` args ` als Argumente für seine Erstellung konstruiert.

Befindet sich bereits ein Eintrag mit demselben Schlüssel im Hash, erstellt diese Funktion einfach einen neuen. (Dieses Verhalten unterscheidet sich von „ replace()“, das den Wert eines bestehenden Eintrags überschreibt.)

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

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald 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 unter Verwendung von args als Argumente für seine Erstellung gebildet.

Wenn im Hash bereits ein Element mit demselben Schlüssel vorhanden ist, wird dessen Wert durch einen Wert ersetzt, der aus ` args` erstellt wird.

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

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald 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] 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: Diezurückgegebenen Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald Sie das nächste Mal eine nicht-konstante Funktion für den 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 Iteratorpaar zurück, das den Wertebereich [first, second) begrenzt, der unter key gespeichert ist. Ist der Bereich leer, sind beide Iteratoren gleich end().

Warnung: Diezurückgegebenen Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald 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

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

Dies ist eine überladene Funktion.

QMultiHash<Key, T>::iterator QMultiHash::erase(QMultiHash<Key, T>::const_iterator pos)

Entfernt das (Schlüssel, Wert)-Paar, das dem Iterator pos zugeordnet ist, aus dem Hash und gibt einen Iterator auf das nächste Element im Hash zurück.

Diese Funktion führt niemals dazu, dass QMultiHash seine interne Datenstruktur neu hasht. Das bedeutet, dass sie sicher während einer Iteration aufgerufen werden kann und die Reihenfolge der Elemente im Hash nicht beeinflusst. Zum Beispiel:

QMultiHash<QObject *, int> objectHash;
//...
QMultiHash<QObject *, int>::iterator i = objectHash.find(obj);
while (i != objectHash.end() && i.key() == obj) {
    if (i.value() == 0) {
        i = objectHash.erase(i);
    } else {
        ++i;
    }
}

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

Siehe auch ` remove()`, ` take()` und ` find()`.

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

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

Enthält der Hash mehrere Elemente mit den Schlüsseln „ key “ und „ value “, verweist der zurückgegebene Iterator auf das zuletzt eingefügte Element.

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

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

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

Dies ist eine überladene Funktion.

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

Fügt einen neuen Eintrag mit dem Schlüssel „ key “ und dem Wert „ value “ ein.

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

QMultiHash Doppelte Schlüssel sind zulässig. Beim Einfügen eines bereits vorhandenen Schlüssels wird ein weiterer Eintrag hinzugefügt, anstatt den bestehenden zu überschreiben. Die Reihenfolge der Elemente in QMultHash ist nicht garantiert.

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

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

Siehe auch ` replace()`.

[since 6.11] QMultiHash<Key, T>::iterator QMultiHash::insert(Key &&key, T &&value)

[since 6.11] QMultiHash<Key, T>::iterator QMultiHash::insert(Key &&key, const T &value)

[since 6.11] QMultiHash<Key, T>::iterator QMultiHash::insert(const Key &key, T &&value)

Diese Funktionen wurden in Qt 6.11 eingeführt.

[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. Wenn der Hash keinen Eintrag enthält, der value zugeordnet ist, wird defaultKey zurückgegeben oder ein standardmäßig konstruierter Schlüssel, falls dieser Parameter nicht angegeben wurde.

Diese Funktion kann langsam sein (lineare Laufzeit), da die interne Datenstruktur von ` QMultiHash` für eine schnelle Suche nach Schlüsseln und nicht nach Werten optimiert ist.

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

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

Warnung: Diezurückgegebenen Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald 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 konstanten Iterator im STL-Stil zurück, der auf das imaginäre Element nach dem letzten Schlüssel im Hash zeigt.

Warnung: Diezurückgegebenen Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald Sie das nächste Mal eine nicht-konstante Funktion für den 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: Diezurückgegebenen Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald Sie das nächste Mal eine nicht-konstante Funktion für den 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 konstanten Iterator im STL-Stil zurück, der auf den ersten Eintrag im Hash zeigt.

Warnung: Diezurückgegebenen Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald Sie das nächste Mal eine nicht-konstante Funktion für den 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: Diezurückgegebenen Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald Sie das nächste Mal eine nicht-konstante Funktion für den 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 konstanten Iterator im STL-Stil zurück, der auf den imaginären Eintrag nach dem letzten Eintrag im Hash zeigt.

Warnung: Diezurückgegebenen Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald Sie das nächste Mal eine nicht-konstante Funktion für den 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 Hashs in beliebiger Reihenfolge enthält. Schlüssel, die im Hash mehrfach vorkommen, tauchen auch in der Liste mehrfach auf.

Es wird garantiert, dass die Reihenfolge mit der übereinstimmt, die von ` values()` verwendet wird.

Diese Funktion erstellt in linearer Zeit eine neue Liste. Der damit verbundene Zeit- und Speicherbedarf lässt sich vermeiden, indem man statt keyBegin() die Funktion keyEnd() verwendet.

Siehe auch values() und key().

qsizetype QMultiHash::remove(const Key &key)

Entfernt alle Elemente aus dem Hash, die den Schlüssel „ key “ haben. Gibt die Anzahl der entfernten Elemente zurück.

Siehe auch remove(const Key &key, const T &value).

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

Entfernt alle Elemente aus dem Hash, die den Schlüssel „ key “ und den Wert „ value “ haben. 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 aus dem Multi-Hash, für die das Prädikat „ pred “ den Wert „true“ zurückgibt.

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, sofern 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 einen neuen Eintrag mit dem Schlüssel „ key “ und dem Wert „ value “ ein.

Falls bereits ein Eintrag mit dem key vorhanden ist, wird dessen Wert durch value ersetzt.

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

Gibt einen Iterator zurück, der auf das neue bzw. aktualisierte Element verweist.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald 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)

Ersetzt diesen Multi-Hash durch other. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.

T QMultiHash::take(const Key &key)

Entfernt das Element mit dem Schlüssel „ key “ aus dem Hash und gibt den damit verknüpften Wert zurück.

Wenn der Eintrag im Hash nicht vorhanden ist, gibt die Funktion einfach einen standardmäßig konstruierten Wert zurück. Wenn im Hash mehrere Einträge für „ key “ vorhanden sind, wird nur der 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 zurück, die alle Schlüssel des Maps enthält. Schlüssel, die im Map mehrfach vorkommen, erscheinen in der zurückgegebenen Liste nur einmal.

Siehe auch „ keys()“ und „ values()“.

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

Fügt alle Elemente des Hashs „ 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 aus dem Hash „ other “ in diesen Hash ein und gibt eine Referenz auf diesen Hash zurück.

Siehe auch ` insert()`.

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

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

Gibt den Wert zurück, der dem „ key “ zugeordnet ist.

Enthält der Hash keinen Eintrag mit dem key, gibt die Funktion defaultValue zurück oder einen standardmäßig konstruierten Wert, falls dieser Parameter nicht angegeben wurde.

Befinden sich mehrere Einträge für den „ key “ im Hash, wird der Wert des zuletzt eingefügten Eintrags zurückgegeben.

QList<T> QMultiHash::values() const

Gibt eine Liste zurück, die alle Werte des Hashs in beliebiger Reihenfolge enthält. Ist einem Schlüssel mehr als ein Wert zugeordnet, werden alle diese Werte in die Liste aufgenommen – nicht nur der zuletzt eingefügte.

Es wird garantiert, dass die Reihenfolge mit der von ` keys()` übereinstimmt.

Diese Funktion erstellt eine neue Liste in linearer Zeit. Der damit verbundene Zeit- und Speicherverbrauch lässt sich vermeiden, indem man statt ` keyValueBegin()` die Funktion ` keyValueEnd()` verwendet.

Siehe auch keys() und value().

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

Gibt eine Liste aller Werte zurück, die mit der Funktion „ key “ verknüpft sind, sortiert vom zuletzt eingefügten bis zum am längsten zurückliegenden.

Dies ist eine überladene Funktion.

Siehe auch „ count()“ und „ insert()“.

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

Gibt einen Hash zurück, der alle Elemente dieses Hashs sowie alle Elemente von other enthält. Wenn ein Schlüssel in beiden Hashs vorkommt, enthält der resultierende Hash diesen Schlüssel mehrfach.

Siehe auch operator+=().

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

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

Siehe auch „ unite()“ und „ insert()“.

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

Gibt den Wert zurück, der dem „ key “ zugeordnet ist, als bearbeitbare Referenz.

Enthält der Hash keinen Eintrag mit dem Schlüssel „ key “, fügt die Funktion einen standardmäßig konstruierten Wert mit dem Schlüssel „ key “ in den Hash ein und gibt eine Referenz darauf zurück.

Enthält der Hash mehrere Elemente mit dem key, gibt diese Funktion eine Referenz auf den zuletzt eingefügten Wert zurück.

Warnung: Zurückgegebene Iteratoren/Referenzen sollten als ungültig betrachtet werden, sobald Sie das nächste Mal eine nicht-konstante Funktion für das Hash aufrufen oder wenn das 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“ zurückgibt, 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 &> “ entgegennehmen.

Gibt die Anzahl der entfernten Elemente zurück, sofern 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&>())) “ gleich „ true “ ist.

[noexcept] bool operator!=(const QMultiHash<Key, T> &lhs, const QMultiHash<Key, T> &rhs)

Gibt „ true “ zurück, wenn der Multihash von „ lhs “ nicht mit dem Multihash von „ rhs “ übereinstimmt; andernfalls wird „ false “ zurückgegeben.

Zwei Multihashes gelten als gleich, wenn sie dieselben (Schlüssel, Wert)-Paare enthalten.

Diese Funktion setzt voraus, dass der Werttyp die Methode ` operator==()` implementiert.

Siehe auch „ operator==()“.

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

Schreibt den Hash „ hash “ in den Stream „ out “.

Diese Funktion setzt voraus, dass die Schlüssel- und Werttypen die Schnittstelle ` operator<<()` implementieren.

Siehe auch „Serialisierung vonQt-Datentypen“.

[noexcept] bool operator==(const QMultiHash<Key, T> &lhs, const QMultiHash<Key, T> &rhs)

Gibt „ true “ zurück, wenn der Multihash von „ lhs “ mit dem Multihash von „ rhs “ übereinstimmt; andernfalls wird „ false “ zurückgegeben.

Zwei Multihashes gelten als gleich, wenn sie dieselben (Schlüssel, Wert)-Paare enthalten.

Diese Funktion setzt voraus, dass der Werttyp „ operator==() “ implementiert.

Siehe auch ` operator!=()`.

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

Liest einen Hash aus dem Stream „ in “ in „ hash “ ein.

Diese Funktion setzt voraus, dass die Schlüssel- und Werttypen „ operator>>() “ implementieren.

Siehe auch „Serialisierung vonQt-Datentypen“.

© 2026 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.