QMap Class
template <typename Key, typename T> class QMapDie Klasse „QMap“ ist eine Template-Klasse, die ein assoziatives Array bereitstellt. Mehr...
| Header: | #include <QMap> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QMap gehört zu den implizit gemeinsam genutzten Klassen und den Containerklassen.
Hinweis: Alle Funktionen dieser Klasse sind reentrant.
QMap-Vergleiche
| Kategorie | Vergleichbare Typen |
|---|---|
| Gleichheit | QMap |
Öffentliche Typen
| class | const_iterator |
| class | iterator |
| class | key_iterator |
| ConstIterator | |
| Iterator | |
| const_key_value_iterator | |
| difference_type | |
| key_type | |
| key_value_iterator | |
| mapped_type | |
| size_type |
Öffentliche Funktionen
| QMap() | |
| QMap(const std::map<Key, T> &other) | |
| QMap(std::initializer_list<std::pair<Key, T>> list) | |
| QMap(std::map<Key, T> &&other) | |
| QMap(const QMap<Key, T> &other) | |
| QMap(QMap<Key, T> &&other) | |
| ~QMap() | |
(since 6.4) auto | asKeyValueRange() && |
(since 6.4) auto | asKeyValueRange() & |
(since 6.4) auto | asKeyValueRange() const && |
(since 6.4) auto | asKeyValueRange() const & |
| QMap<Key, T>::iterator | begin() |
| QMap<Key, T>::const_iterator | begin() const |
| QMap<Key, T>::const_iterator | cbegin() const |
| QMap<Key, T>::const_iterator | cend() const |
| void | clear() |
| QMap<Key, T>::const_iterator | constBegin() const |
| QMap<Key, T>::const_iterator | constEnd() const |
| QMap<Key, T>::const_iterator | constFind(const Key &key) const |
| QMap<Key, T>::const_key_value_iterator | constKeyValueBegin() const |
| QMap<Key, T>::const_key_value_iterator | constKeyValueEnd() const |
| bool | contains(const Key &key) const |
| QMap<Key, T>::size_type | count(const Key &key) const |
| QMap<Key, T>::size_type | count() const |
| bool | empty() const |
| QMap<Key, T>::iterator | end() |
| QMap<Key, T>::const_iterator | end() const |
| std::pair<QMap<Key, T>::iterator, QMap<Key, T>::iterator> | equal_range(const Key &key) |
| std::pair<QMap<Key, T>::const_iterator, QMap<Key, T>::const_iterator> | equal_range(const Key &key) const |
| QMap<Key, T>::iterator | erase(QMap<Key, T>::const_iterator pos) |
(since 6.0) QMap<Key, T>::iterator | erase(QMap<Key, T>::const_iterator first, QMap<Key, T>::const_iterator last) |
| QMap<Key, T>::iterator | find(const Key &key) |
| QMap<Key, T>::const_iterator | find(const Key &key) const |
| T & | first() |
| const T & | first() const |
| const Key & | firstKey() const |
| void | insert(QMap<Key, T> &&map) |
| void | insert(const QMap<Key, T> &map) |
| QMap<Key, T>::iterator | insert(const Key &key, const T &value) |
| QMap<Key, T>::iterator | insert(QMap<Key, T>::const_iterator pos, const Key &key, const T &value) |
| bool | isEmpty() const |
| Key | key(const T &value, const Key &defaultKey = Key()) const |
| QMap<Key, T>::key_iterator | keyBegin() const |
| QMap<Key, T>::key_iterator | keyEnd() const |
| QMap<Key, T>::key_value_iterator | keyValueBegin() |
| QMap<Key, T>::const_key_value_iterator | keyValueBegin() const |
| QMap<Key, T>::key_value_iterator | keyValueEnd() |
| QMap<Key, T>::const_key_value_iterator | keyValueEnd() const |
| QList<Key> | keys() const |
| QList<Key> | keys(const T &value) const |
| T & | last() |
| const T & | last() const |
| const Key & | lastKey() const |
| QMap<Key, T>::iterator | lowerBound(const Key &key) |
| QMap<Key, T>::const_iterator | lowerBound(const Key &key) const |
| QMap<Key, T>::size_type | remove(const Key &key) |
(since 6.1) QMap<Key, T>::size_type | removeIf(Predicate pred) |
| QMap<Key, T>::size_type | size() const |
| void | swap(QMap<Key, T> &other) |
| T | take(const Key &key) |
| std::map<Key, T> | toStdMap() const & |
(since 6.0) std::map<Key, T> | toStdMap() && |
| QMap<Key, T>::iterator | upperBound(const Key &key) |
| QMap<Key, T>::const_iterator | upperBound(const Key &key) const |
| T | value(const Key &key, const T &defaultValue = T()) const |
| QList<T> | values() const |
| QMap<Key, T> & | operator=(QMap<Key, T> &&other) |
| QMap<Key, T> & | operator=(const QMap<Key, T> &other) |
| T & | operator[](const Key &key) |
| T | operator[](const Key &key) const |
Verwandte Nicht-Mitglieder
(since 6.1) qsizetype | erase_if(QMap<Key, T> &map, Predicate pred) |
(since 6.8) size_t | qHash(const QMap<Key, T> &key, size_t seed = 0) |
| bool | operator!=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs) |
(since 6.12) bool | operator<(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs) |
| QDataStream & | operator<<(QDataStream &out, const QMap<Key, T> &map) |
(since 6.12) bool | operator<=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs) |
(since 6.12) auto | operator<=>(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs) |
| bool | operator==(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs) |
(since 6.12) bool | operator>(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs) |
(since 6.12) bool | operator>=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs) |
| QDataStream & | operator>>(QDataStream &in, QMap<Key, T> &map) |
Ausführliche Beschreibung
QMap<KEY, T> ist eine der generischen Containerklassen von Qt, wobei „ Key “ der Typ für Suchschlüssel und „ T “ der Typ für die zugeordneten Werte ist. Sie speichert (Schlüssel, Wert)-Paare und ermöglicht eine schnelle Suche anhand des Schlüssels.
QMap und QHash bieten sehr ähnliche Funktionalität. Die Unterschiede sind:
- QHash bietet im Durchschnitt schnellere Suchvorgänge als QMap. (Einzelheiten finden Sie unter „Algorithmische Komplexität “.)
- Beim Durchlaufen eines „ QHash “ sind die Elemente beliebig angeordnet. Bei QMap sind die Elemente immer nach Schlüssel sortiert.
- Der Schlüsseltyp eines „ QHash “ muss den Operator ==() und eine globale Funktion „ qHash(Key)“ bereitstellen. Der Schlüsseltyp eines „QMap“ muss den Operator <() bereitstellen, der eine totale Ordnung spezifiziert. Seit Qt 5.8.1 ist es auch sicher, einen Zeigertyp als Schlüssel zu verwenden, selbst wenn der zugrunde liegende Operator <() keine totale Ordnung bereitstellt.
Hier ist ein Beispiel für eine QMap mit „ QString “-Schlüsseln und „ int “-Werten:
Um ein (Schlüssel, Wert)-Paar in die Map einzufügen, kannst du den Operator []() verwenden:
map["one"] = 1;
map["three"] = 3;
map["seven"] = 7;Dadurch werden die folgenden drei (Schlüssel, Wert)-Paare in die QMap eingefügt: („one“, 1), („three“, 3) und („seven“, 7). Eine weitere Möglichkeit, Elemente in die Map einzufügen, ist die Verwendung von ` insert()`:
map.insert("twelve", 12);Um einen Wert abzurufen, verwenden Sie den Operator []() oder value():
int num1 = map["thirteen"];
int num2 = map.value("thirteen");Wenn im Map kein Eintrag mit dem angegebenen Schlüssel vorhanden ist, geben diese Funktionen einen standardmäßig konstruierten Wert zurück.
Wenn Sie prüfen möchten, ob die Map einen bestimmten Schlüssel enthält, verwenden Sie ` contains()`:
int timeout = 30;
if (map.contains("TIMEOUT"))
timeout = map.value("TIMEOUT");Es gibt auch eine Überladung von ` value()`, die ihr zweites Argument als Standardwert verwendet, wenn kein Eintrag mit dem angegebenen Schlüssel vorhanden ist:
int timeout = map.value("TIMEOUT", 30);Generell empfehlen wir, für die Suche nach einem Schlüssel in einer Map eher ` contains()` und ` value()` anstelle des `operator[]()` zu verwenden. Der Grund dafür ist, dass der Operator []() stillschweigend ein Element in die Map einfügt, wenn kein Element mit demselben Schlüssel existiert (es sei denn, die Map ist von Typ `const`). Der folgende Codeausschnitt erstellt beispielsweise 1000 Elemente im Arbeitsspeicher:
// WRONG
QMap<int, QWidget *> map;
//...
for (int i = 0; i < 1000; ++i) {
if (map[i] == okButton)
cout << "Found button at index " << i << endl;
}Um dieses Problem zu vermeiden, ersetzen Sie im obigen Code map[i] durch map.value(i).
Wenn Sie alle in einem QMap gespeicherten (Schlüssel, Wert)-Paare durchlaufen möchten, können Sie einen Iterator verwenden. QMap bietet sowohl Iteratoren im Java-Stil (QMapIterator und QMutableMapIterator) als auch Iteratoren im STL-Stil (QMap::const_iterator und QMap::iterator) an. So durchlaufen Sie eine `QMap<QString, int>` mit einem Iterator im Java-Stil:
QMapIterator<QString, int> i(map);
while (i.hasNext()) {
i.next();
cout << qPrintable(i.key()) << ": " << i.value() << endl;
}Hier ist derselbe Code, diesmal jedoch mit einem Iterator im STL-Stil:
for (auto i = map.cbegin(), end = map.cend(); i != end; ++i)
cout << qPrintable(i.key()) << ": " << i.value() << endl;Die Elemente werden in aufsteigender Schlüsselreihenfolge durchlaufen.
Ein QMap erlaubt nur einen Wert pro Schlüssel. Wenn Sie ` insert()` mit einem Schlüssel aufrufen, der bereits im QMap vorhanden ist, wird der vorherige Wert gelöscht. Zum Beispiel:
map.insert("plenty", 100);
map.insert("plenty", 2000);
// map.value("plenty") == 2000Sie können jedoch mehrere Werte pro Schlüssel speichern, indem Sie ` QMultiMap` verwenden.
Wenn Sie nur die Werte aus einer Map extrahieren müssen (nicht die Schlüssel), können Sie auch eine bereichsbasierte `for`-Schleife verwenden:
Elemente können auf verschiedene Weise aus dem Map entfernt werden. Eine Möglichkeit ist der Aufruf von ` remove()`; dadurch wird jedes Element mit dem angegebenen Schlüssel entfernt. Eine weitere Möglichkeit ist die Verwendung von ` QMutableMapIterator::remove()`. Darüber hinaus können Sie den gesamten Map mit ` clear()` leeren.
Die Schlüssel- und Wertdatentypen von QMap müssen zuweisbare Datentypen sein. Dies deckt die meisten Datentypen ab, auf die Sie wahrscheinlich stoßen werden, aber der Compiler lässt beispielsweise nicht zu, dass Sie einen ` QWidget ` als Wert speichern; stattdessen müssen Sie einen ` QWidget *` speichern. Außerdem muss der Schlüsseltyp von QMap den Operator `<()` bereitstellen. QMap verwendet diesen, um seine Elemente sortiert zu halten, und geht davon aus, dass zwei Schlüssel ` x ` und ` y ` gleichwertig sind, wenn weder ` x < y ` noch ` y < x ` wahr ist.
Beispiel:
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
class Employee
{
public:
Employee() {}
Employee(const QString &name, QDate dateOfBirth);
QString name() const { return myName; }
QDate dateOfBirth() const { return myDateOfBirth; }
//...
private:
QString myName;
QDate myDateOfBirth;
};
inline bool operator<(const Employee &e1, const Employee &e2)
{
if (e1.name() != e2.name())
return e1.name() < e2.name();
return e1.dateOfBirth() < e2.dateOfBirth();
}
#endif // EMPLOYEE_HIn diesem Beispiel vergleichen wir zunächst die Namen der Mitarbeiter. Sind diese gleich, vergleichen wir ihre Geburtsdaten, um den Gleichstand aufzuheben.
Siehe auch QMapIterator, QMutableMapIterator, QHash und QSet.
Dokumentation zu Mitgliedstypen
QMap::ConstIterator
Synonym im Qt-Stil für „ QMap::const_iterator “.
QMap::Iterator
Synonym im Qt-Stil für „ QMap::iterator “.
QMap::const_key_value_iterator
Der Typdefinitionsbezeichner „QMap::const_key_value_iterator“ stellt einen Iterator im STL-Stil für „ QMap “ bereit.
`QMap::const_key_value_iterator` entspricht im Wesentlichen ` QMap::const_iterator `, mit dem Unterschied, dass der Operator `*()` anstelle eines Werts ein Schlüssel-Wert-Paar zurückgibt.
Siehe auch „ QKeyValueIterator “.
[alias] QMap::difference_type
Typedef für ptrdiff_t. Wird aus Gründen der STL-Kompatibilität bereitgestellt.
[alias] QMap::key_type
Typedef für „Key“. Wird aus Gründen der STL-Kompatibilität bereitgestellt.
QMap::key_value_iterator
Der Typedef „QMap::key_value_iterator“ stellt einen Iterator im STL-Stil für „ QMap “ bereit.
QMap::key_value_iterator entspricht im Wesentlichen QMap::iterator, mit dem Unterschied, dass der Operator *() anstelle eines Werts ein Schlüssel-Wert-Paar zurückgibt.
Siehe auch „ QKeyValueIterator “.
[alias] QMap::mapped_type
Typedef für T. Wird aus Gründen der STL-Kompatibilität bereitgestellt.
[alias] QMap::size_type
Typedef für int. Wird aus Gründen der STL-Kompatibilität bereitgestellt.
Dokumentation zu den Member-Funktionen
[default] QMap::QMap()
Erstellt eine leere Zuordnung.
Siehe auch „ clear()“.
[explicit] QMap::QMap(const std::map<Key, T> &other)
Erstellt eine Kopie von „ other “.
Siehe auch toStdMap().
QMap::QMap(std::initializer_list<std::pair<Key, T>> list)
Erstellt eine Map mit einer Kopie jedes Elements aus der Initialisierungsliste „ list “.
[explicit] QMap::QMap(std::map<Key, T> &&other)
Erstellt eine Karte, indem die Daten von other abgerufen werden.
Siehe auch toStdMap().
[implicit] QMap::QMap(const QMap<Key, T> &other)
Erstellt eine Kopie von other.
Dieser Vorgang erfolgt in konstanter Zeit, da QMap implizit gemeinsam genutzt wird. Dadurch ist die Rückgabe eines QMap aus einer Funktion sehr schnell. Wird eine gemeinsam genutzte Instanz geändert, wird sie kopiert (Copy-on-Write), was lineare Zeit in Anspruch nimmt.
Siehe auch operator=.
[implicit] QMap::QMap(QMap<Key, T> &&other)
Erstellt eine QMap-Instanz mit der „Move“-Konstruktion.
[implicit] QMap::~QMap()
Löscht die Map. Verweise auf die Werte in der Map sowie alle Iteratoren über diese Map werden ungültig.
[since 6.4] auto QMap::asKeyValueRange() &&
[since 6.4] auto QMap::asKeyValueRange() &
[since 6.4] auto QMap::asKeyValueRange() const &&
[since 6.4] auto QMap::asKeyValueRange() const &
Gibt ein Range-Objekt zurück, das die Iteration über diese Map als Schlüssel-Wert-Paare ermöglicht. Dieses Range-Objekt kann beispielsweise in einer Range-basierten for-Schleife in Kombination mit einer strukturierten Bindungsdeklaration verwendet werden:
QMap<QString, int> map;
map.insert("January", 1);
map.insert("February", 2);
// ...
map.insert("December", 12);
for (auto [key, value] : map.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, Verweise auf die entsprechenden Elemente in der Map sind. Das bedeutet konkret, dass eine Änderung des Werts die Map selbst verändert.
Diese Funktionen wurden in Qt 6.4 eingeführt.
Siehe auch QKeyValueIterator.
QMap<Key, T>::iterator QMap::begin()
Gibt einen Iterator im STL-Stil zurück, der auf das erste Element im Map zeigt.
Siehe auch „ constBegin()“ und „ end()“.
QMap<Key, T>::const_iterator QMap::begin() const
Dies ist eine überladene Funktion.
QMap<Key, T>::const_iterator QMap::cbegin() const
Gibt einen konstanten Iterator im STL-Stil zurück, der auf das erste Element im Map zeigt.
Siehe auch „ begin()“ und „ cend()“.
QMap<Key, T>::const_iterator QMap::cend() const
Gibt einen konstanten Iterator im STL-Stil zurück, der auf das imaginäre Element nach dem letzten Element im Map zeigt.
Siehe auch „ cbegin()“ und „ end()“.
void QMap::clear()
Entfernt alle Elemente aus der Karte.
Siehe auch „ remove()“.
QMap<Key, T>::const_iterator QMap::constBegin() const
Gibt einen konstanten Iterator im STL-Stil zurück, der auf das erste Element im Map zeigt.
Siehe auch „ begin()“ und „ constEnd()“.
QMap<Key, T>::const_iterator QMap::constEnd() const
Gibt einen konstanten Iterator im STL-Stil zurück, der auf das imaginäre Element nach dem letzten Element in der Map verweist.
Siehe auch „ constBegin()“ und „ end()“.
QMap<Key, T>::const_iterator QMap::constFind(const Key &key) const
Gibt einen const-Iterator zurück, der auf das Element mit dem Schlüssel „ key “ im Map verweist.
Enthält die Map keinen Eintrag mit dem Schlüssel „ key “, gibt die Funktion „ constEnd()“ zurück.
Siehe auch ` find()`.
QMap<Key, T>::const_key_value_iterator QMap::constKeyValueBegin() const
Gibt einen konstanten Iterator im STL-Stil zurück, der auf den ersten Eintrag im Map verweist.
Siehe auch ` keyValueBegin()`.
QMap<Key, T>::const_key_value_iterator QMap::constKeyValueEnd() const
Gibt einen konstanten Iterator im STL-Stil zurück, der auf den imaginären Eintrag nach dem letzten Eintrag in der Map zeigt.
Siehe auch ` constKeyValueBegin()`.
bool QMap::contains(const Key &key) const
Gibt „ true “ zurück, wenn die Map einen Eintrag mit dem Schlüssel „ key “ enthält; andernfalls wird „ false “ zurückgegeben.
Siehe auch count().
QMap<Key, T>::size_type QMap::count(const Key &key) const
Gibt die Anzahl der Elemente zurück, die dem Schlüssel „ key “ zugeordnet sind.
Siehe auch contains().
QMap<Key, T>::size_type QMap::count() const
Entspricht „ size()“.
Dies ist eine überladene Funktion.
bool QMap::empty() const
Diese Funktion dient der STL-Kompatibilität. Sie entspricht der Funktion „ isEmpty()“ und gibt „true“ zurück, wenn die Map leer ist; andernfalls gibt sie „false“ zurück.
QMap<Key, T>::iterator QMap::end()
Gibt einen Iterator im STL-Stil zurück, der auf das imaginäre Element nach dem letzten Element in der Map zeigt.
Siehe auch „ begin()“ und „ constEnd()“.
QMap<Key, T>::const_iterator QMap::end() const
Dies ist eine überladene Funktion.
std::pair<QMap<Key, T>::iterator, QMap<Key, T>::iterator> QMap::equal_range(const Key &key)
Gibt ein Iteratorpaar zurück, das den Wertebereich [first, second) begrenzt, der unter key gespeichert ist.
std::pair<QMap<Key, T>::const_iterator, QMap<Key, T>::const_iterator> QMap::equal_range(const Key &key) const
Dies ist eine überladene Funktion.
QMap<Key, T>::iterator QMap::erase(QMap<Key, T>::const_iterator pos)
Entfernt das (Schlüssel, Wert)-Paar, auf das der Iterator pos zeigt, aus der Map und gibt einen Iterator auf das nächste Element in der Map zurück.
Hinweis: Der Iterator pos muss gültig und dereferenzierbar sein.
Siehe auch remove().
[since 6.0] QMap<Key, T>::iterator QMap::erase(QMap<Key, T>::const_iterator first, QMap<Key, T>::const_iterator last)
Entfernt die (Schlüssel, Wert)-Paare, auf die der Iteratorbereich [first, last) verweist, aus der Map. Gibt einen Iterator auf das Element in der Map zurück, das auf das zuletzt entfernte Element folgt.
Hinweis: Der Bereich [first, last) muss ein gültiger Bereich in *this sein.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch ` remove()`.
QMap<Key, T>::iterator QMap::find(const Key &key)
Gibt einen Iterator zurück, der auf das Element mit dem Schlüssel „ key “ im Map verweist.
Enthält die Map keinen Eintrag mit dem Schlüssel „ key “, gibt die Funktion „ end()“ zurück.
Siehe auch „ constFind()“, „ value()“, „ values()“, „ lowerBound()“ und „ upperBound()“.
QMap<Key, T>::const_iterator QMap::find(const Key &key) const
Dies ist eine überladene Funktion.
T &QMap::first()
Gibt eine Referenz auf den ersten Wert im Map zurück, d. h. den Wert, der dem kleinsten Schlüssel zugeordnet ist. Diese Funktion setzt voraus, dass der Map nicht leer ist.
Wenn die Funktion nicht gemeinsam genutzt wird (oder die „const“-Version aufgerufen wird), wird dies in konstanter Zeit ausgeführt.
Siehe auch last(), firstKey() und isEmpty().
const T &QMap::first() const
Dies ist eine überladene Funktion.
const Key &QMap::firstKey() const
Gibt eine Referenz auf den kleinsten Schlüssel im Map zurück. Diese Funktion setzt voraus, dass der Map nicht leer ist.
Die Ausführung erfolgt in konstanter Zeit.
Siehe auch lastKey(), first(), keyBegin() und isEmpty().
void QMap::insert(QMap<Key, T> &&map)
Verschiebt alle Elemente aus „ map “ in diese Map.
Wenn ein Schlüssel in beiden Maps vorkommt, wird sein Wert durch den in „ map “ gespeicherten Wert ersetzt.
Wenn „ map “ gemeinsam genutzt wird, werden die Einträge stattdessen kopiert.
void QMap::insert(const QMap<Key, T> &map)
Fügt alle Elemente aus „ map “ in diese Map ein.
Wenn ein Schlüssel in beiden Maps vorkommt, wird sein Wert durch den in „ map “ gespeicherten Wert ersetzt.
QMap<Key, T>::iterator QMap::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 Eintrag mit dem Schlüssel „ key “ vorhanden ist, wird dessen Wert durch „ value “ ersetzt.
Das Einfügen eines Schlüssel-Wert-Paares mit einem bereits vorhandenen Schlüssel ersetzt den bestehenden Wert.
Gibt einen Iterator zurück, der auf das neue bzw. aktualisierte Element verweist.
QMap<Key, T>::iterator QMap::insert(QMap<Key, T>::const_iterator pos, const Key &key, const T &value)
Fügt ein neues Element mit dem Schlüssel „ key “ und dem Wert „ value “ ein, wobei der Hinweis „ pos “ angibt, wo die Einfügung erfolgen soll.
Wird constBegin() als Hinweis verwendet, bedeutet dies, dass key kleiner ist als jeder Schlüssel in der Map, während constEnd() angibt, dass key (streng) größer ist als jeder Schlüssel in der Map. Andernfalls sollte der Hinweis die Bedingung (pos - 1) erfüllen:key() < key <= pos.key(). Ist der Hinweis pos falsch, wird er ignoriert und ein regulärer Einfügevorgang durchgeführt.
Wenn bereits ein Element mit dem Schlüssel key vorhanden ist, wird dessen Wert durch value ersetzt.
Ist der Hinweis korrekt und ist das Map nicht gemeinsam genutzt, erfolgt das Einfügen in amortisierter konstanter Zeit.
Beim Erstellen einer Map aus sortierten Daten ist das Einfügen des größten Schlüssels zuerst mit ` constBegin()` schneller als das Einfügen in sortierter Reihenfolge mit ` constEnd()`, da ` constEnd()` – 1 (was benötigt wird, um zu prüfen, ob der Hinweis gültig ist) logarithmische Zeit benötigt.
Hinweis: Seien Sie vorsichtig mit dem Hinweis. Die Angabe eines Iterators aus einer älteren gemeinsam genutzten Instanz kann zu einem Absturz führen, es besteht jedoch auch das Risiko, dass sowohl die Map als auch die ` pos `-Map unbemerkt beschädigt werden.
Gibt einen Iterator zurück, der auf das neue bzw. aktualisierte Element verweist.
Dies ist eine überladene Funktion.
bool QMap::isEmpty() const
Gibt „ true “ zurück, wenn die Map keine Elemente enthält; andernfalls wird „false“ zurückgegeben.
Siehe auch size().
Key QMap::key(const T &value, const Key &defaultKey = Key()) const
Gibt den ersten Schlüssel mit dem Wert „ value “ zurück oder „ defaultKey “, falls die Map keinen Eintrag mit dem Wert „ value “ enthält. Wird kein „ defaultKey “ angegeben, gibt die Funktion einen standardmäßig konstruierten Schlüssel zurück.
Diese Funktion kann langsam sein (lineare Laufzeit), da die interne Datenstruktur von ` QMap` für eine schnelle Suche nach Schlüsseln und nicht nach Werten optimiert ist.
Siehe auch value() und keys().
QMap<Key, T>::key_iterator QMap::keyBegin() const
Gibt einen konstanten Iterator im STL-Stil zurück, der auf den ersten Schlüssel im Map zeigt.
Siehe auch „ keyEnd()“ und „ firstKey()“.
QMap<Key, T>::key_iterator QMap::keyEnd() const
Gibt einen konstanten Iterator im STL-Stil zurück, der auf das imaginäre Element nach dem letzten Schlüssel im Map verweist.
Siehe auch „ keyBegin()“ und „ lastKey()“.
QMap<Key, T>::key_value_iterator QMap::keyValueBegin()
Gibt einen Iterator im STL-Stil zurück, der auf den ersten Eintrag im Map verweist.
Siehe auch ` keyValueEnd()`.
QMap<Key, T>::const_key_value_iterator QMap::keyValueBegin() const
Gibt einen konstanten Iterator im STL-Stil zurück, der auf den ersten Eintrag im Map zeigt.
Siehe auch ` keyValueEnd()`.
QMap<Key, T>::key_value_iterator QMap::keyValueEnd()
Gibt einen Iterator im STL-Stil zurück, der auf den imaginären Eintrag nach dem letzten Eintrag in der Map zeigt.
Siehe auch ` keyValueBegin()`.
QMap<Key, T>::const_key_value_iterator QMap::keyValueEnd() const
Gibt einen konstanten Iterator im STL-Stil zurück, der auf den imaginären Eintrag nach dem letzten Eintrag im Map zeigt.
Siehe auch ` keyValueBegin()`.
QList<Key> QMap::keys() const
Gibt eine Liste zurück, die alle Schlüssel des Maps in aufsteigender Reihenfolge enthält.
Es wird garantiert, dass die Reihenfolge mit der von ` values()` übereinstimmt.
Diese Funktion erstellt eine neue Liste in linearer Zeit. Der damit verbundene Zeit- und Speicherbedarf lässt sich vermeiden, indem man statt ` keyBegin()` die Funktion ` keyEnd()` verwendet.
Siehe auch values() und key().
QList<Key> QMap::keys(const T &value) const
Gibt eine Liste zurück, die alle Schlüssel enthält, die mit dem Wert „ value “ verknüpft sind, in aufsteigender Reihenfolge.
Diese Funktion kann langsam sein (lineare Laufzeit), da die interne Datenstruktur von ` QMap` für eine schnelle Suche nach Schlüsseln und nicht nach Werten optimiert ist.
Dies ist eine überladene Funktion.
T &QMap::last()
Gibt eine Referenz auf den letzten Wert im Map zurück, d. h. den Wert, der dem größten Schlüssel zugeordnet ist. Diese Funktion setzt voraus, dass der Map nicht leer ist.
Wenn die Funktion ohne Freigabe aufgerufen wird (oder die „const“-Version), wird sie in konstanter Zeit ausgeführt.
Siehe auch „ first()“, „ lastKey()“ und „ isEmpty()“.
const T &QMap::last() const
Dies ist eine überladene Funktion.
const Key &QMap::lastKey() const
Gibt eine Referenz auf den größten Schlüssel im Map zurück. Diese Funktion setzt voraus, dass der Map nicht leer ist.
Die Ausführung erfolgt in konstanter Zeit.
Siehe auch firstKey(), last(), keyEnd() und isEmpty().
QMap<Key, T>::iterator QMap::lowerBound(const Key &key)
Gibt einen Iterator zurück, der auf das erste Element mit dem Schlüssel „ key “ im Map verweist. Enthält der Map kein Element mit dem Schlüssel „ key “, gibt die Funktion einen Iterator auf das nächstgelegene Element mit einem größeren Schlüssel zurück.
Siehe auch upperBound() und find().
QMap<Key, T>::const_iterator QMap::lowerBound(const Key &key) const
Dies ist eine überladene Funktion.
QMap<Key, T>::size_type QMap::remove(const Key &key)
Entfernt alle Elemente, die den Schlüssel „ key “ haben, aus der Map. Gibt die Anzahl der entfernten Elemente zurück; diese beträgt 1, wenn der Schlüssel in der Map vorhanden ist, andernfalls 0.
Siehe auch ` clear()` und ` take()`.
[since 6.1] template <typename Predicate> QMap<Key, T>::size_type QMap::removeIf(Predicate pred)
Entfernt alle Elemente aus der Map, für die das Prädikat „ pred “ den Wert „true“ zurückgibt.
Die Funktion unterstützt Prädikate, die entweder ein Argument vom Typ „ QMap<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.
Siehe auch „ clear()“ und „ take()“.
QMap<Key, T>::size_type QMap::size() const
Gibt die Anzahl der (Schlüssel, Wert)-Paare in der Map zurück.
Siehe auch „ isEmpty()“ und „ count()“.
[noexcept] void QMap::swap(QMap<Key, T> &other)
Ersetzt diese Karte durch „ other “. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.
T QMap::take(const Key &key)
Entfernt das Element mit dem Schlüssel „ key “ aus der Map und gibt den damit verknüpften Wert zurück.
Wenn der Eintrag in der Map nicht vorhanden ist, gibt die Funktion einfach einen standardmäßig konstruierten Wert zurück.
Wenn Sie den Rückgabewert nicht verwenden, ist ` remove()` effizienter.
Siehe auch ` remove()`.
std::map<Key, T> QMap::toStdMap() const &
Gibt eine STL-Map zurück, die dieser entspricht: QMap.
[since 6.0] std::map<Key, T> QMap::toStdMap() &&
Hinweis: Durch den Aufruf dieser Funktion verbleibt diese „ QMap “ im teilweise geformten Zustand, in dem nur die Zerstörung oder die Zuweisung eines neuen Werts zulässig sind.
Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.0 eingeführt.
QMap<Key, T>::iterator QMap::upperBound(const Key &key)
Gibt einen Iterator zurück, der auf das Element verweist, das unmittelbar auf das letzte Element mit dem Schlüssel „ key “ in der Map folgt. Enthält die Map kein Element mit dem Schlüssel „ key “, gibt die Funktion einen Iterator auf das nächstgelegene Element mit einem größeren Schlüssel zurück.
Beispiel:
QMap<int, QString> map;
map.insert(1, "one");
map.insert(5, "five");
map.insert(10, "ten");
map.upperBound(0); // returns iterator to (1, "one")
map.upperBound(1); // returns iterator to (5, "five")
map.upperBound(2); // returns iterator to (5, "five")
map.upperBound(10); // returns end()
map.upperBound(999); // returns end()Siehe auch lowerBound() und find().
QMap<Key, T>::const_iterator QMap::upperBound(const Key &key) const
Dies ist eine überladene Funktion.
T QMap::value(const Key &key, const T &defaultValue = T()) const
Gibt den Wert zurück, der dem Schlüssel „ key “ zugeordnet ist.
Enthält die Map keinen Eintrag mit dem Schlüssel „ key “, gibt die Funktion „ defaultValue “ zurück. Wird kein „ defaultValue “ angegeben, gibt die Funktion einen standardmäßig konstruierten Wert zurück.
Siehe auch „ key()“, „ values()“, „ contains()“ und „ operator[]()“.
QList<T> QMap::values() const
Gibt eine Liste zurück, die alle Werte des Maps in aufsteigender Reihenfolge ihrer Schlüssel enthält.
Diese Funktion erstellt eine neue Liste in linearer Zeit. Der damit verbundene Zeit- und Speicherbedarf lässt sich vermeiden, indem man von ` keyValueBegin()` bis ` keyValueEnd()` durchläuft.
Siehe auch keys() und value().
[implicit] QMap<Key, T> &QMap::operator=(QMap<Key, T> &&other)
Weist „ other “ dieser „ QMap “-Instanz zu.
[implicit] QMap<Key, T> &QMap::operator=(const QMap<Key, T> &other)
Weist dieser Karte „ other “ zu und gibt einen Verweis auf diese Karte zurück.
T &QMap::operator[](const Key &key)
Gibt den Wert zurück, der dem Schlüssel „ key “ zugeordnet ist, als bearbeitbare Referenz.
Enthält die Map keinen Eintrag mit dem Schlüssel „ key “, fügt die Funktion einen standardmäßig konstruierten Wert mit dem Schlüssel „ key “ in die Map ein und gibt eine Referenz darauf zurück.
Siehe auch insert() und value().
T QMap::operator[](const Key &key) const
Entspricht „ value()“.
Dies ist eine überladene Funktion.
Verwandte Nicht-Mitglieder
[since 6.1] template <
typename Key,
typename T,
typename Predicate
>
qsizetype erase_if(QMap<Key, T> &map, Predicate pred)
Entfernt alle Elemente aus der Map „ map “, für die das Prädikat „ pred “ den Wert „true“ zurückgibt.
Die Funktion unterstützt Prädikate, die entweder ein Argument vom Typ „ QMap<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.
[since 6.8] size_t qHash(const QMap<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.
Diese Funktion wurde in Qt 6.8 eingeführt.
bool operator!=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
Gibt „ true “ zurück, wenn „ lhs “ nicht gleich „ rhs “ ist; andernfalls wird „false“ zurückgegeben.
Zwei Maps gelten als gleich, wenn sie dieselben (Schlüssel, Wert)-Paare enthalten.
Diese Funktion setzt voraus, dass die Typen der Schlüssel und Werte die Schnittmenge „ operator==() “ implementieren.
Siehe auch ` operator==()`.
[since 6.12] bool operator<(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
Gibt „ true “ zurück, wenn „ lhs “ lexikografisch kleiner ist als „ rhs “; andernfalls wird „ false “ zurückgegeben.
Dieser Operator ist verfügbar, wenn sowohl der Schlüsseltyp „ Key “ als auch der zugeordnete Typ „ T “ entweder „ operator<=>() “ (im C++20-Modus), die Hilfsmethode „ compareThreeWay() “ oder „ operator<() “ bereitstellen.
Diese Funktion wurde in Qt 6.12 eingeführt.
template <typename Key, typename T> QDataStream &operator<<(QDataStream &out, const QMap<Key, T> &map)
Schreibt die Map „ map “ in den Stream „ out “.
Diese Funktion setzt voraus, dass die Schlüssel- und Werttypen die Schnittstelle ` operator<<()` implementieren.
Siehe auch Format der QDataStream-Operatoren.
[since 6.12] bool operator<=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
Gibt „ true “ zurück, wenn „ lhs “ lexikografisch kleiner oder gleich „ rhs“ ist; andernfalls wird „ false “ zurückgegeben.
Dieser Operator ist verfügbar, wenn sowohl der Schlüsseltyp „ Key “ als auch der zugeordnete Typ „ T “ entweder „ operator<=>() “ (im C++20-Modus), die Hilfsmethode „ compareThreeWay() “ oder „ operator<() “ bereitstellen.
Diese Funktion wurde in Qt 6.12 eingeführt.
[since 6.12] auto operator<=>(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
Vergleicht den Inhalt von lhs und rhs lexikografisch. Gibt das Ergebnis des stärksten anwendbaren Kategorietyps zurück.
Hinweis: Dieser Operator ist nur im C++20-Modus verfügbar, wenn sowohl der Schlüsseltyp „ Key “ als auch der zugeordnete Typ „ T “ die Anforderungen des Konzepts „ std::three_way_comparable “ erfüllen oder „ operator<() “ bereitstellen. In diesem Fall werden die Operatoren „ < “, „ <= “, „ > “ und „ >= “ aus „ operator<=>() “ und „ operator==() “ synthetisiert.
Diese Funktion wurde in Qt 6.12 eingeführt.
bool operator==(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
Gibt „ true “ zurück, wenn „ lhs “ gleich „ rhs “ ist; andernfalls wird „false“ zurückgegeben.
Zwei Maps gelten als gleich, wenn sie dieselben (Schlüssel, Wert)-Paare enthalten.
Diese Funktion setzt voraus, dass die Schlüssel- und Werttypen die Schnittstelle ` operator==()` implementieren.
Siehe auch ` operator!=()`.
[since 6.12] bool operator>(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
Gibt „ true “ zurück, wenn „ lhs “ lexikografisch größer ist als „ rhs “; andernfalls wird „ false “ zurückgegeben.
Dieser Operator ist verfügbar, wenn sowohl der Schlüsseltyp ` Key ` als auch der zugeordnete Typ ` T ` entweder ` operator<=>() ` (im C++20-Modus), die Hilfsmethode ` compareThreeWay() ` oder ` operator<()` bereitstellen.
Diese Funktion wurde in Qt 6.12 eingeführt.
[since 6.12] bool operator>=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
Gibt „ true “ zurück, wenn „ lhs “ lexikografisch größer oder gleich „ rhs“ ist; andernfalls wird „ false “ zurückgegeben.
Dieser Operator ist verfügbar, wenn sowohl der Schlüsseltyp „ Key “ als auch der zugeordnete Typ „ T “ entweder „ operator<=>() “ (im C++20-Modus), die Hilfsmethode „ compareThreeWay() “ oder „ operator<() “ bereitstellen.
Diese Funktion wurde in Qt 6.12 eingeführt.
template <typename Key, typename T> QDataStream &operator>>(QDataStream &in, QMap<Key, T> &map)
Liest eine Map aus dem Stream „ in “ in „ map “ ein.
Diese Funktion setzt voraus, dass die Schlüssel- und Werttypen die Schnittstelle „ operator>>() “ implementieren.
Siehe auch Format der QDataStream-Operatoren.
© 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.