QMultiMap Class
The QMultiMap class is a convenience QMap subclass that provides multi-valued maps. More...
Header: | #include <QMultiMap> |
qmake: | QT += core |
Inherits: | QMap |
Note: All functions in this class are reentrant.
Public Functions
QMultiMap() | |
QMultiMap(int) | |
QMultiMap(const QMap<Key, T> &other) | |
QMultiMap(QMap<Key, T> &&other) | |
typename QMap<Key, T>::const_iterator | constFind(const Key &key, const T &value) const |
bool | contains(const Key &key, const T &value) const |
int | count(const Key &key, const T &value) const |
typename QMap<Key, T>::iterator | find(const Key &key, const T &value) |
typename QMap<Key, T>::const_iterator | find(const Key &key, const T &value) const |
typename QMap<Key, T>::iterator | insert(const Key &key, const T &value) |
typename QMap<Key, T>::iterator | insert(typename QMap<Key, T>::const_iterator pos, const Key &key, const T &value) |
int | remove(const Key &key, const T &value) |
typename QMap<Key, T>::iterator | replace(const Key &key, const T &value) |
void | swap(QMultiMap<Key, T> &other) |
QMultiMap<K, V> | operator+(const QMultiMap<K, V> &other) const |
QMultiMap<K, V> & | operator+=(const QMultiMap<K, V> &other) |
- 60 public functions inherited from QMap
Detailed Description
The QMultiMap class is a convenience QMap subclass that provides multi-valued maps.
QMultiMap<Key, T> is one of Qt's generic container classes. It inherits QMap and extends it with a few convenience functions that make it more suitable than QMap for storing multi-valued maps. A multi-valued map is a map that allows multiple values with the same key; QMap normally doesn't allow that, unless you call QMap::insertMulti().
Because QMultiMap inherits QMap, all of QMap's functionality also applies to QMultiMap. For example, you can use isEmpty() to test whether the map is empty, and you can traverse a QMultiMap using QMap's iterator classes (for example, QMapIterator). But in addition, it provides an insert() function that corresponds to QMap::insertMulti(), and a replace() function that corresponds to QMap::insert(). It also provides convenient operator+() and operator+=().
Example:
QMultiMap<QString, int> map1, map2, map3; map1.insert("plenty", 100); map1.insert("plenty", 2000); // map1.size() == 2 map2.insert("plenty", 5000); // map2.size() == 1 map3 = map1 + map2; // map3.size() == 3
Unlike QMap, QMultiMap provides no operator[]. Use value() or replace() if you want to access the most recently inserted item with a certain key.
If you want to retrieve all the values for a single key, you can use values(const Key &key), which returns a QList<T>:
QList<int> values = map.values("plenty"); for (int i = 0; i < values.size(); ++i) cout << values.at(i) << endl;
The items that share the same key are available from most recently to least recently inserted.
If you prefer the STL-style iterators, you can call find() to get the iterator for the first item with a key and iterate from there:
QMultiMap<QString, int>::iterator i = map.find("plenty"); while (i != map.end() && i.key() == "plenty") { cout << i.value() << endl; ++i; }
QMultiMap's key and value data types must be assignable data types. This covers most data types you are likely to encounter, but the compiler won't let you, for example, store a QWidget as a value; instead, store a QWidget *. In addition, QMultiMap's key type must provide operator<(). See the QMap documentation for details.
See also QMap, QMapIterator, QMutableMapIterator, and QMultiHash.
Member Function Documentation
QMultiMap::QMultiMap()
Default constructs an instance of QMultiMap.
QMultiMap::QMultiMap(int)
Default constructs an instance of QMultiMap.
QMultiMap::QMultiMap(const QMap<Key, T> &other)
Default constructs an instance of QMultiMap.
QMultiMap::QMultiMap(QMap<Key, T> &&other)
Default constructs an instance of QMultiMap.