QMap Class

template <typename Key, typename T> class QMap

Die QMap-Klasse ist eine Vorlagenklasse, die ein assoziatives Array bereitstellt. Mehr...

Kopfzeile: #include <QMap>
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

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
(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)
QDataStream &operator<<(QDataStream &out, const QMap<Key, T> &map)
bool operator==(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
QDataStream &operator>>(QDataStream &in, QMap<Key, T> &map)

Detaillierte Beschreibung

QMap<Schlüssel, T> ist eine der generischen Container-Klassen von Qt. Sie speichert (Schlüssel, Wert) Paare und bietet eine schnelle Suche nach dem Schlüssel.

QMap und QHash bieten eine sehr ähnliche Funktionalität. Die Unterschiede sind:

  • QHash QMap bietet durchschnittlich schnellere Lookups als QMap. (Siehe Algorithmische Komplexität für Details).
  • Bei der Iteration über eine QHash sind die Elemente beliebig geordnet. Bei QMap sind die Elemente immer nach dem Schlüssel sortiert.
  • Der Schlüsseltyp einer QHash muss operator==() und eine globale qHash(Key) Funktion bereitstellen. Der Schlüsseltyp einer QMap muss operator<() bereitstellen, der eine Gesamtreihenfolge angibt. Seit Qt 5.8.1 ist es auch sicher, einen Zeigertyp als Schlüssel zu verwenden, selbst wenn der zugrundeliegende operator<() keine Gesamtreihenfolge angibt.

Hier ist ein Beispiel für eine QMap mit QString keys und int values:

QMap<QString, int> map;

Um ein (Schlüssel, Wert) Paar in die Map einzufügen, können Sie operator[]() verwenden:

map["one"] = 1;
map["three"] = 3;
map["seven"] = 7;

Dies fügt die folgenden drei (Schlüssel, Wert) Paare in die QMap ein: ("eins", 1), ("drei", 3), und ("sieben", 7). Eine andere Möglichkeit, Elemente in die Map einzufügen, ist die Verwendung von insert():

map.insert("twelve", 12);

Um einen Wert nachzuschlagen, verwenden Sie operator[]() oder value():

int num1 = map["thirteen"];
int num2 = map.value("thirteen");

Wenn es in der Map kein Element mit dem angegebenen Schlüssel gibt, geben diese Funktionen einen standardmäßig konstruierten Wert zurück.

Wenn Sie prüfen wollen, 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 value(), die ihr zweites Argument als Standardwert verwendet, wenn es kein Element mit dem angegebenen Schlüssel gibt:

int timeout = map.value("TIMEOUT", 30);

Im Allgemeinen empfehlen wir, contains() und value() anstelle von operator[]() für die Suche nach einem Schlüssel in einer Map zu verwenden. Der Grund dafür ist, dass operator[]() stillschweigend ein Element in die Map einfügt, wenn kein Element mit demselben Schlüssel existiert (es sei denn, die Map ist const). Der folgende Codeschnipsel erzeugt zum Beispiel 1000 Elemente im Speicher:

// 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 durch alle in einer QMap gespeicherten Paare (Schlüssel, Wert) navigieren 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). Hier sehen Sie, wie man mit einem Iterator im Java-Stil über eine QMap<QString, int> iteriert:

QMapIterator<QString, int> i(map);
while (i.hasNext()) {
    i.next();
    cout << qPrintable(i.key()) << ": " << i.value() << endl;
}

Hier ist der gleiche Code, aber diesmal mit einem STL-Iterator:

for (auto i = map.cbegin(), end = map.cend(); i != end; ++i)
    cout << qPrintable(i.key()) << ": " << i.value() << endl;

Die Elemente werden in aufsteigender Reihenfolge der Schlüssel durchlaufen.

Eine QMap erlaubt nur einen Wert pro Schlüssel. Wenn Sie insert() mit einem Schlüssel aufrufen, der bereits in der QMap existiert, wird der vorherige Wert gelöscht. Ein Beispiel:

map.insert("plenty", 100);
map.insert("plenty", 2000);
// map.value("plenty") == 2000

Sie 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 bereichsbasierte für verwenden:

QMap<QString, int> map;
...
for (int value : std::as_const(map))
    cout << value << endl;

Elemente können auf verschiedene Weise aus der Map entfernt werden. Eine Möglichkeit besteht darin, remove() aufzurufen; dadurch wird jedes Element mit dem angegebenen Schlüssel entfernt. Eine andere Möglichkeit ist die Verwendung von QMutableMapIterator::remove(). Außerdem können Sie die gesamte Map mit clear() löschen.

Die Schlüssel- und Wertdatentypen von QMap müssen zuweisbare Datentypen sein. Dies deckt die meisten Datentypen ab, die Sie wahrscheinlich antreffen werden, aber der Compiler lässt es nicht zu, dass Sie z. B. einen QWidget als Wert speichern; speichern Sie stattdessen einen QWidget *. Darüber hinaus muss der Schlüsseltyp von QMap den Operator<() bereitstellen. QMap verwendet ihn, um seine Elemente sortiert zu halten, und nimmt an, 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);
    ...

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_H

In diesem Beispiel vergleichen wir zunächst die Namen der Mitarbeiter. Wenn sie gleich sind, vergleichen wir ihre Geburtsdaten, um den Gleichstand aufzuheben.

Siehe auch QMapIterator, QMutableMapIterator, QHash, und QSet.

Dokumentation der Mitgliedstypen

QMap::ConstIterator

Qt-style ist ein Synonym für QMap::const_iterator.

QMap::Iterator

Qt-style ist ein Synonym für QMap::iterator.

QMap::const_key_value_iterator

Der QMap::const_key_value_iterator Typedef bietet einen STL-artigen Iterator für QMap.

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

Siehe auch QKeyValueIterator.

[alias] QMap::difference_type

Typendefinition für ptrdiff_t. Aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QMap::key_type

Typedef für Key. Aus Gründen der STL-Kompatibilität bereitgestellt.

QMap::key_value_iterator

Das QMap::key_value_iterator-Typedef bietet einen STL-artigen Iterator für QMap.

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

Siehe auch QKeyValueIterator.

[alias] QMap::mapped_type

Typedef für T. Aus Gründen der STL-Kompatibilität bereitgestellt.

[alias] QMap::size_type

Typendefinition für int. Aus Gründen der STL-Kompatibilität zur Verfügung gestellt.

Dokumentation der Mitgliedsfunktionen

[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 Bereichsobjekt zurück, das die Iteration über diese Map 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:

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 erhalten werden, Referenzen auf die Werte in der Map sind. Das Ändern des Wertes wird die Map selbst verändern.

Diese Funktion wurde in Qt 6.4 eingeführt.

Siehe auch QKeyValueIterator.

QMap::QMap()

Konstruiert eine leere Karte.

Siehe auch clear().

[explicit] QMap::QMap(const std::map<Key, T> &other)

Konstruiert eine Kopie von other.

Siehe auch toStdMap().

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

Konstruiert eine Karte mit einer Kopie von jedem der Elemente in der Initialisierungsliste list.

[explicit] QMap::QMap(std::map<Key, T> &&other)

Konstruiert eine Karte durch Verschieben von other.

Siehe auch toStdMap().

[default] QMap::QMap(const QMap<Key, T> &other)

Konstruiert eine Kopie von other.

Dieser Vorgang erfolgt in konstanter Zeit, da QMap implizit gemeinsam genutzt wird. Dies macht die Rückgabe einer QMap aus einer Funktion sehr schnell. Wenn eine gemeinsam genutzte Instanz geändert wird, wird sie kopiert (copy-on-write), was lineare Zeit benötigt.

Siehe auch operator=.

[default] QMap::QMap(QMap<Key, T> &&other)

Move-konstruiert eine QMap-Instanz.

[default] QMap::~QMap()

Zerstört die Map. Verweise auf die Werte in der Map und alle Iteratoren über diese Map werden ungültig.

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

Gibt einen Iterator im STL-Stil zurück, der auf das erste Element in der Karte 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 Iterator im Stil von const STL zurück, der auf das erste Element in der Map zeigt.

Siehe auch begin() und cend().

QMap<Key, T>::const_iterator QMap::cend() const

Gibt einen const STL-artigen Iterator zurück, der auf das imaginäre Element nach dem letzten Element in der Karte 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 Iterator im Stil von const STL zurück, der auf das erste Element in der Map zeigt.

Siehe auch begin() und constEnd().

QMap<Key, T>::const_iterator QMap::constEnd() const

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

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 in der Map zeigt.

Wenn die Map kein Element mit dem Schlüssel key enthält, gibt die Funktion constEnd() zurück.

Siehe auch find().

QMap<Key, T>::const_key_value_iterator QMap::constKeyValueBegin() const

Gibt einen Iterator im Stil von const STL zurück, der auf den ersten Eintrag in der Map zeigt.

Siehe auch keyValueBegin().

QMap<Key, T>::const_key_value_iterator QMap::constKeyValueEnd() const

Gibt einen const STL-artigen Iterator 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 Karte ein Element 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 mit dem Schlüssel key verbundenen Elemente zurück.

Siehe auch contains().

QMap<Key, T>::size_type QMap::count() const

Dies ist eine überladene Funktion.

Dasselbe wie size().

bool QMap::empty() const

Diese Funktion ist aus Gründen der STL-Kompatibilität vorgesehen. Sie ist äquivalent zu isEmpty() und gibt true zurück, wenn die Karte 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 Karte 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 Paar von Iteratoren zurück, die den Wertebereich [first, second) abgrenzen, 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 Paar (Schlüssel, Wert), auf das der Iterator pos zeigt, aus der Map und gibt einen Iterator zum nächsten 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 Paare (Schlüssel, Wert), auf die der Iteratorbereich [first, last) zeigt, aus der Map. Gibt einen Iterator zu dem Element in der Map zurück, das auf das letzte 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 in der Map zeigt.

Wenn die Karte kein Element mit dem Schlüssel key enthält, 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 einen Verweis auf den ersten Wert in der Map zurück, d. h. den Wert, der dem kleinsten Schlüssel zugeordnet ist. Diese Funktion geht davon aus, dass die Map nicht leer ist.

Wenn unshared (oder const version) aufgerufen wird, wird sie 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 einen Verweis auf den kleinsten Schlüssel in der Map zurück. Diese Funktion geht davon aus, dass die Map nicht leer ist.

Sie wird in konstanter Zeit ausgeführt.

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 für beide Maps gleich ist, wird sein Wert durch den in map gespeicherten Wert ersetzt.

Wenn map gemeinsam genutzt wird, werden die Elemente stattdessen kopiert.

void QMap::insert(const QMap<Key, T> &map)

Fügt alle Elemente in 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 ein neues Element mit dem Schlüssel key und einem Wert von value ein.

Wenn es bereits ein Element mit dem Schlüssel key gibt, wird der Wert dieses Elements durch value ersetzt.

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

QMap<Key, T>::iterator QMap::insert(QMap<Key, T>::const_iterator pos, const Key &key, const T &value)

Dies ist eine überladene Funktion.

Fügt ein neues Element mit dem Schlüssel key und dem Wert value und mit dem Hinweis pos ein, der angibt, wo die Einfügung erfolgen soll.

Wenn constBegin() als Hinweis verwendet wird, zeigt es an, dass key kleiner als ein beliebiger Schlüssel in der Karte ist, während constEnd() vorschlägt, dass key (unbedingt) größer als ein beliebiger Schlüssel in der Karte ist. Ansonsten sollte der Hinweis die Bedingung (pos - 1) erfüllen.key() < key <= pos.key(). Wenn der Hinweis pos falsch ist, wird er ignoriert und eine reguläre Einfügung durchgeführt.

Wenn es bereits ein Element mit dem Schlüssel key gibt, wird der Wert dieses Elements durch value ersetzt.

Wenn der Hinweis korrekt ist und die Map nicht gemeinsam genutzt wird, wird die Einfügung in amortisierter konstanter Zeit ausgeführt.

Bei der Erstellung 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 (das zur Überprüfung der Gültigkeit des Hinweises benötigt wird) logarithmische Zeit benötigt.

Hinweis: Seien Sie vorsichtig mit dem Hint. Die Bereitstellung eines Iterators aus einer älteren gemeinsamen Instanz könnte zum Absturz führen, aber es besteht auch das Risiko, dass sowohl die Map als auch die pos Map stillschweigend beschädigt werden.

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

bool QMap::isEmpty() const

Gibt true zurück, wenn die Karte keine Elemente enthält; andernfalls wird false zurückgegeben.

Siehe auch size().

Key QMap::key(const T &value, const Key &defaultKey = Key()) const

Dies ist eine überladene Funktion.

Gibt den ersten Schlüssel mit dem Wert value zurück, oder defaultKey, wenn die Karte kein Element mit dem Wert value enthält. Wenn kein defaultKey angegeben wird, gibt die Funktion einen standardmäßig konstruierten Schlüssel zurück.

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

Siehe auch value() und keys().

QMap<Key, T>::key_iterator QMap::keyBegin() const

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

Siehe auch keyEnd() und firstKey().

QMap<Key, T>::key_iterator QMap::keyEnd() const

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

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 in der Map zeigt.

Siehe auch keyValueEnd().

QMap<Key, T>::const_key_value_iterator QMap::keyValueBegin() const

Gibt einen Iterator im Stil von const STL zurück, der auf den ersten Eintrag in der 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 const STL-artigen Iterator zurück, der auf den imaginären Eintrag nach dem letzten Eintrag in der Map zeigt.

Siehe auch keyValueBegin().

QList<Key> QMap::keys() const

Gibt eine Liste zurück, die alle Schlüssel der Map in aufsteigender Reihenfolge enthält.

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().

QList<Key> QMap::keys(const T &value) const

Dies ist eine überladene Funktion.

Gibt eine Liste zurück, die alle mit dem Wert value verbundenen Schlüssel in aufsteigender Reihenfolge enthält.

Diese Funktion kann langsam sein(lineare Zeit), da die interne Datenstruktur von QMap für schnelles Nachschlagen nach Schlüssel und nicht nach Wert optimiert ist.

T &QMap::last()

Gibt einen Verweis auf den letzten Wert in der Map zurück, d. h. den Wert, der dem größten Schlüssel zugeordnet ist. Diese Funktion geht davon aus, dass die Map nicht leer ist.

Wenn unshared (oder die const-Version) aufgerufen wird, wird sie in logarithmischer 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 einen Verweis auf den größten Schlüssel in der Map zurück. Diese Funktion geht davon aus, dass die Map nicht leer ist.

Sie wird in logarithmischer Zeit ausgeführt.

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 in der Map zeigt. Wenn die Map kein Element mit dem Schlüssel key enthält, gibt die Funktion einen Iterator zurück, der auf das nächstgelegene Element mit einem größeren Schlüssel zeigt.

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 Karte. Gibt die Anzahl der entfernten Elemente zurück, die 1 ist, wenn der Schlüssel in der Karte existiert, und sonst 0.

Siehe auch clear() und take().

[since 6.1] template <typename Predicate> QMap<Key, T>::size_type QMap::removeIf(Predicate pred)

Entfernt alle Elemente, für die das Prädikat pred den Wert true liefert, aus der Map.

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 &> 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().

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)

Tauscht diese Karte mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.

T QMap::take(const Key &key)

Entfernt das Element mit dem Schlüssel key aus der Map und gibt den dazugehörigen Wert zurück.

Wenn das Element nicht in der Map 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 QMap entspricht.

[since 6.0] std::map<Key, T> QMap::toStdMap() &&

Dies ist eine überladene Funktion.

Hinweis: Der Aufruf dieser Funktion lässt QMap im teilweise gebildeten Zustand, in dem die einzigen gültigen Operationen Zerstörung oder Zuweisung eines neuen Wertes sind.

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 zeigt, das unmittelbar auf das letzte Element mit dem Schlüssel key in der Map folgt. Wenn die Map kein Element mit dem Schlüssel key enthält, gibt die Funktion einen Iterator zurück, der auf das nächstgelegene Element mit einem größeren Schlüssel zeigt.

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 mit dem Schlüssel key verknüpft ist.

Wenn die Karte kein Element mit dem Schlüssel key enthält, gibt die Funktion defaultValue zurück. Wenn kein defaultValue angegeben ist, 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 der Map in aufsteigender Reihenfolge ihrer Schlüssel enthält.

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

Siehe auch keys() und value().

[default] QMap<Key, T> &QMap::operator=(QMap<Key, T> &&other)

Verschieben - weist other dieser QMap Instanz zu.

[default] 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 zum Schlüssel key gehörenden Wert als veränderbaren Verweis zurück.

Wenn die Map kein Element mit dem Schlüssel key enthält, 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

Dies ist eine überladene Funktion.

Dasselbe wie value().

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, für die das Prädikat pred den Wert true liefert, aus der Map map.

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 &> annehmen.

Gibt die Anzahl der entfernten Elemente zurück, falls 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 werden als gleich angesehen, wenn sie die gleichen (Schlüssel, Wert) Paare enthalten.

Diese Funktion erfordert, dass die Schlüssel- und Werttypen operator==() implementieren.

Siehe auch operator==().

template <typename Key, typename T> QDataStream &operator<<(QDataStream &out, const QMap<Key, T> &map)

Schreibt die Map map in den Stream out.

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

Siehe auch Format der QDataStream-Operatoren.

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 werden als gleich angesehen, wenn sie die gleichen (Schlüssel, Wert) Paare enthalten.

Diese Funktion erfordert, dass die Schlüssel- und Werttypen operator==() implementieren.

Siehe auch operator!=().

template <typename Key, typename T> QDataStream &operator>>(QDataStream &in, QMap<Key, T> &map)

Liest eine Karte aus dem Stream in in map.

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

Siehe auch Format der QDataStream-Operatoren.

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