QCborMap Class | Qt Core | Qt 6.11.0
Description: The QCborMap class is used to hold an associative container representable in CBOR.

- Qt 6.11
- Qt Core
- C++ Classes
- QCborMap
- Qt 6.11.0 Reference Documentation

# QCborMap Class

The QCborMap class is used to hold an associative container representable in CBOR. More...

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

- List of all members, including inherited members
- QCborMap is part of CBOR Support in Qt.

This class is strongly comparable.

This class is strongly comparable with QCborValue and QCborValueConstRef.

Note: All functions in this class are reentrant.

## Public Types

class | ConstIterator
class | Iterator
| const_iterator
`(since 6.10)` | const_key_value_iterator
| iterator
| key_type
`(since 6.10)` | key_value_iterator
| mapped_type
| size_type
| value_type

## Public Functions

| QCborMap()
| QCborMap(std::initializer_list<QCborMap::value_type> args)
| QCborMap(const QCborMap &other)
`(since 6.10)` | QCborMap(QCborMap &&other)
| ~QCborMap()
`(since 6.10)` auto | asKeyValueRange() &&
`(since 6.10)` auto | asKeyValueRange() &
`(since 6.10)` auto | asKeyValueRange() const &&
`(since 6.10)` auto | asKeyValueRange() const &
QCborMap::iterator | begin()
QCborMap::const_iterator | begin() const
QCborMap::const_iterator | cbegin() const
QCborMap::const_iterator | cend() const
void | clear()
int | compare(const QCborMap &other) const
QCborMap::const_iterator | constBegin() const
QCborMap::const_iterator | constEnd() const
QCborMap::const_iterator | constFind(qint64 key) const
QCborMap::const_iterator | constFind(QLatin1StringView key) const
QCborMap::const_iterator | constFind(const QCborValue &key) const
QCborMap::const_iterator | constFind(const QString &key) const
`(since 6.10)` QCborMap::const_key_value_iterator | constKeyValueBegin() const
`(since 6.10)` QCborMap::const_key_value_iterator | constKeyValueEnd() const
bool | contains(const QCborValue &key) const
bool | contains(qint64 key) const
bool | contains(QLatin1StringView key) const
bool | contains(const QString &key) const
bool | empty() const
QCborMap::iterator | end()
QCborMap::const_iterator | end() const
QCborMap::iterator | erase(QCborMap::const_iterator it)
QCborMap::iterator | erase(QCborMap::iterator it)
QCborValue | extract(QCborMap::const_iterator it)
QCborValue | extract(QCborMap::iterator it)
QCborMap::iterator | find(qint64 key)
QCborMap::const_iterator | find(qint64 key) const
QCborMap::iterator | find(QLatin1StringView key)
QCborMap::iterator | find(const QCborValue &key)
QCborMap::iterator | find(const QString &key)
QCborMap::const_iterator | find(QLatin1StringView key) const
QCborMap::const_iterator | find(const QCborValue &key) const
QCborMap::const_iterator | find(const QString &key) const
QCborMap::iterator | insert(QCborMap::value_type v)
QCborMap::iterator | insert(QLatin1StringView key, const QCborValue &value)
QCborMap::iterator | insert(const QCborValue &key, const QCborValue &value)
QCborMap::iterator | insert(const QString &key, const QCborValue &value)
QCborMap::iterator | insert(qint64 key, const QCborValue &value)
bool | isEmpty() const
`(since 6.10)` QCborMap::key_value_iterator | keyValueBegin()
`(since 6.10)` QCborMap::const_key_value_iterator | keyValueBegin() const
`(since 6.10)` QCborMap::key_value_iterator | keyValueEnd()
`(since 6.10)` QCborMap::const_key_value_iterator | keyValueEnd() const
QList<QCborValue> | keys() const
void | remove(const QCborValue &key)
void | remove(qint64 key)
void | remove(QLatin1StringView key)
void | remove(const QString &key)
qsizetype | size() const
void | swap(QCborMap &other)
QCborValue | take(QLatin1StringView key)
QCborValue | take(const QCborValue &key)
QCborValue | take(const QString &key)
QCborValue | take(qint64 key)
QCborValue | toCborValue() const
QJsonObject | toJsonObject() const
QVariantHash | toVariantHash() const
QVariantMap | toVariantMap() const
QCborValue | value(const QCborValue &key) const
QCborValue | value(qint64 key) const
QCborValue | value(QLatin1StringView key) const
QCborValue | value(const QString &key) const
`(since 6.10)` QCborMap & | operator=(QCborMap &&other)
QCborMap & | operator=(const QCborMap &other)
QCborValueRef | operator[](qint64 key)
const QCborValue | operator[](const QCborValue &key) const
const QCborValue | operator[](qint64 key) const
QCborValueRef | operator[](QLatin1StringView key)
QCborValueRef | operator[](const QCborValue &key)
QCborValueRef | operator[](const QString &key)
const QCborValue | operator[](QLatin1StringView key) const
const QCborValue | operator[](const QString &key) const

## Static Public Members

QCborMap | fromJsonObject(const QJsonObject &obj)
`(since 6.3)` QCborMap | fromJsonObject(QJsonObject &&obj)
QCborMap | fromVariantHash(const QVariantHash &hash)
QCborMap | fromVariantMap(const QVariantMap &map)

## Related Non-Members

bool | operator!=(const QCborMap &lhs, const QCborMap &rhs)
bool | operator<(const QCborMap &lhs, const QCborMap &rhs)
bool | operator<=(const QCborMap &lhs, const QCborMap &rhs)
bool | operator==(const QCborMap &lhs, const QCborMap &rhs)
bool | operator>(const QCborMap &lhs, const QCborMap &rhs)
bool | operator>=(const QCborMap &lhs, const QCborMap &rhs)

## Detailed Description

This class can be used to hold an associative container in CBOR, a map between a key and a value type. CBOR is the Concise Binary Object Representation, a very compact form of binary data encoding that is a superset of JSON. It was created by the IETF Constrained RESTful Environments (CoRE) WG, which has used it in many new RFCs. It is meant to be used alongside the CoAP protocol.

Unlike JSON and QVariantMap, CBOR map keys can be of any type, not just strings. For that reason, QCborMap is effectively a map between QCborValue keys to QCborValue value elements.

However, for all member functions that take a key parameter, QCborMap provides overloads that will work efficiently with integers and strings. In fact, the use of integer keys is encouraged, since they occupy fewer bytes to transmit and are simpler to encode and decode. Newer protocols designed by the IETF CoRE WG to work specifically with CBOR are known to use them.

QCborMap is not sorted, because of that, searching for keys has linear complexity (O(n)). QCborMap actually keeps the elements in the order that they were inserted, which means that it is possible to make sorted QCborMaps by carefully inserting elements in sorted order. CBOR does not require sorting, but recommends it.

QCborMap can also be converted to and from QVariantMap and QJsonObject. However, when performing the conversion, any non-string keys will be stringified using a one-way method that the conversion back to QCborMap will not undo.

See also QCborArray, QCborValue, QJsonDocument, QVariantMap, Parsing and displaying CBOR data, Serialization Converter, and Saving and Loading a Game.

## Member Type Documentation

### QCborMap::const_iterator

A synonym for QCborMap::ConstIterator

### `[since 6.10]` QCborMap::const_key_value_iterator

The QCborMap::const_key_value_iterator typedef provides an STL-style iterator for QCborMap.

QCborMap::const_key_value_iterator is essentially the same as QCborMap::const_iterator but provided for symmetry with other containers like QJsonObject.

This typedef was introduced in Qt 6.10.

See also QKeyValueIterator.

### QCborMap::iterator

A synonym for QCborMap::Iterator.

### QCborMap::key_type

The key type for this map. Since QCborMap keys can be any CBOR type, this is a QCborValue.

### `[since 6.10]` QCborMap::key_value_iterator

The QCborMap::key_value_iterator typedef provides an STL-style iterator for QCborMap.

QCborMap::key_value_iterator is essentially the same as QCborMap::iterator but provided for symmetry with other containers like QJsonObject.

This typedef was introduced in Qt 6.10.

See also QKeyValueIterator.

### QCborMap::mapped_type

The type that is mapped to (the value), that is, a QCborValue.

### QCborMap::size_type

The type that QCborMap uses for sizes.

### QCborMap::value_type

The value that is stored in this container: a pair of QCborValues

## Member Function Documentation

### `[noexcept]` QCborMap::QCborMap()

Constructs an empty CBOR Map object.

See also isEmpty().

### QCborMap::QCborMap(std::initializer_list<QCborMap::value_type> args)

Constructs a QCborMap with items from a brace-initialization list found in args, as in the following example:

     QCborMap map = {
         {0, "Hello"},
         {1, "World"},
         {"foo", nullptr},
         {"bar", QCborArray{0, 1, 2, 3, 4}}
     };

### `[noexcept]` QCborMap::QCborMap(const QCborMap &other)

Creates a QCborMap object that is a copy of other.

### `[constexpr noexcept, since 6.10]` QCborMap::QCborMap(QCborMap &&other)

Move-constructor.

The moved-from object other is placed in the default-constructed state.

This function was introduced in Qt 6.10.

See also QCborMap::QCborMap().

### `[noexcept]` QCborMap::~QCborMap()

Destroys this QCborMap object and frees any associated resources it owns.

### `[since 6.10]` auto QCborMap::asKeyValueRange() &

### `[since 6.10]` auto QCborMap::asKeyValueRange() const &

### `[since 6.10]` auto QCborMap::asKeyValueRange() &&

### `[since 6.10]` auto QCborMap::asKeyValueRange() const &&

Returns a range object that allows iteration over this map as key/value pairs.

Note that the values obtained this way are references into the one in the map. Specifically, mutating the value will modify the map itself.

These functions were introduced in Qt 6.10.

See also QKeyValueIterator.

### QCborMap::iterator QCborMap::begin()

Returns a map iterator pointing to the first key-value pair of this map. If this map is empty, the returned iterator will be the same as end().

See also constBegin() and end().

### QCborMap::const_iterator QCborMap::begin() const

Returns a map iterator pointing to the first key-value pair of this map. If this map is empty, the returned iterator will be the same as constEnd().

See also begin() and constEnd().

### QCborMap::const_iterator QCborMap::cbegin() const

Returns a map iterator pointing to the first key-value pair of this map. If this map is empty, the returned iterator will be the same as constEnd().

See also begin() and constEnd().

### QCborMap::const_iterator QCborMap::cend() const

Returns a map iterator representing an element just past the last element in the map.

See also begin(), constBegin(), find(), and constFind().

### void QCborMap::clear()

Empties this map.

See also isEmpty().

### `[noexcept]` int QCborMap::compare(const QCborMap &other) const

Compares this map and other, comparing each element in sequence, and returns an integer that indicates whether this map should be sorted prior to (if the result is negative) or after other (if the result is positive). If this function returns 0, the two maps are equal and contain the same elements.

Note that CBOR maps are unordered, which means that two maps containing the very same pairs but in different order will still compare differently. To avoid this, it is recommended to insert elements into the map in a predictable order, such as by ascending key value. In fact, maps with keys in sorted order are required for Canonical CBOR representation.

For more information on CBOR sorting order, see QCborValue::compare().

See also QCborValue::compare(), QCborArray::compare(), and operator==().

### QCborMap::const_iterator QCborMap::constBegin() const

Returns a map iterator pointing to the first key-value pair of this map. If this map is empty, the returned iterator will be the same as constEnd().

See also begin() and constEnd().

### QCborMap::const_iterator QCborMap::constEnd() const

Returns a map iterator representing an element just past the last element in the map.

See also begin(), constBegin(), find(), and constFind().

### QCborMap::const_iterator QCborMap::constFind(qint64 key) const

Returns a map iterator to the key-value pair whose key is key, if the map contains such a pair. If it doesn't, this function returns constEnd().

CBOR recommends using integer keys, since they occupy less space and are simpler to encode and decode.

If the map contains more than one key equal to key, it is undefined which one this function will find. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

See also value(qint64), operator[](qint64), find(qint64), remove(qint64), contains(qint64), value(QLatin1StringView), value(const QString &), and value(const QCborValue &).

### QCborMap::const_iterator QCborMap::constFind(QLatin1StringView key) const

Returns a map iterator to the key-value pair whose key is key, if the map contains such a pair. If it doesn't, this function returns constEnd().

If the map contains more than one key equal to key, it is undefined which one this function will find. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

This is an overloaded function.

See also value(QLatin1StringView), operator[](QLatin1StringView), find(QLatin1StringView), remove(QLatin1StringView), contains(QLatin1StringView), value(qint64), value(const QString &), and value(const QCborValue &).

### QCborMap::const_iterator QCborMap::constFind(const QCborValue &key) const

Returns a map iterator to the key-value pair whose key is key, if the map contains such a pair. If it doesn't, this function returns constEnd().

If the map contains more than one key equal to key, it is undefined which one this function will find. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

This is an overloaded function.

See also value(const QCborValue &), operator[](const QCborValue &), find(const QCborValue &), remove(const QCborValue &), contains(const QCborValue &), value(qint64), value(QLatin1StringView), and value(const QString &).

### QCborMap::const_iterator QCborMap::constFind(const QString &key) const

Returns a map iterator to the key-value pair whose key is key, if the map contains such a pair. If it doesn't, this function returns constEnd().

If the map contains more than one key equal to key, it is undefined which one this function will find. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

This is an overloaded function.

See also value(const QString &), operator[](const QString &), find(const QString &), remove(const QString &), contains(const QString &), value(qint64), value(QLatin1StringView), and value(const QCborValue &).

### `[since 6.10]` QCborMap::const_key_value_iterator QCborMap::constKeyValueBegin() const

Returns a const STL-style iterator pointing to the first entry in the map.

This function was introduced in Qt 6.10.

See also keyValueBegin().

### `[since 6.10]` QCborMap::const_key_value_iterator QCborMap::constKeyValueEnd() const

Returns a const STL-style iterator pointing to the imaginary entry after the last entry in the map.

This function was introduced in Qt 6.10.

See also constKeyValueBegin().

### bool QCborMap::contains(const QCborValue &key) const

Returns true if this map contains a key-value pair identified by key key.

See also value(const QCborValue &), operator[](const QCborValue &), find(const QCborValue &), remove(const QCborValue &), contains(qint64), remove(QLatin1StringView), and remove(const QString &).

### bool QCborMap::contains(qint64 key) const

Returns true if this map contains a key-value pair identified by key key. CBOR recommends using integer keys, since they occupy less space and are simpler to encode and decode.

See also value(qint64), operator[](qint64), find(qint64), remove(qint64), contains(QLatin1StringView), remove(const QString &), and remove(const QCborValue &).

### bool QCborMap::contains(QLatin1StringView key) const

Returns true if this map contains a key-value pair identified by key key.

This is an overloaded function.

See also value(QLatin1StringView), operator[](QLatin1StringView), find(QLatin1StringView), remove(QLatin1StringView), contains(qint64), remove(const QString &), and remove(const QCborValue &).

### bool QCborMap::contains(const QString &key) const

Returns true if this map contains a key-value pair identified by key key.

This is an overloaded function.

See also value(const QString &), operator[](const QString &), find(const QString &), remove(const QString &), contains(qint64), remove(QLatin1StringView), and remove(const QCborValue &).

### bool QCborMap::empty() const

Synonym for isEmpty(). This function is provided for compatibility with generic code that uses the Standard Library API.

Returns true if this map is empty (size() == 0).

See also isEmpty() and size().

### QCborMap::iterator QCborMap::end()

Returns a map iterator representing an element just past the last element in the map.

See also begin(), constBegin(), find(), and constFind().

### QCborMap::const_iterator QCborMap::end() const

Returns a map iterator representing an element just past the last element in the map.

See also begin(), constBegin(), find(), and constFind().

### QCborMap::iterator QCborMap::erase(QCborMap::const_iterator it)

Removes the key-value pair pointed to by the map iterator it and returns a pointer to the next element, after removal.

See also remove(), begin(), end(), insert(), and extract().

### QCborMap::iterator QCborMap::erase(QCborMap::iterator it)

Removes the key-value pair pointed to by the map iterator it and returns a pointer to the next element, after removal.

This is an overloaded function.

See also remove(), begin(), end(), and insert().

### QCborValue QCborMap::extract(QCborMap::iterator it)

### QCborValue QCborMap::extract(QCborMap::const_iterator it)

Extracts a value from the map at the position indicated by iterator it and returns the value so extracted.

See also insert(), erase(), take(), and remove().

### QCborMap::iterator QCborMap::find(qint64 key)

### QCborMap::const_iterator QCborMap::find(qint64 key) const

Returns a map iterator to the key-value pair whose key is key, if the map contains such a pair. If it doesn't, this function returns end().

CBOR recommends using integer keys, since they occupy less space and are simpler to encode and decode.

If the map contains more than one key equal to key, it is undefined which one this function will find. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

See also value(qint64), operator[](qint64), constFind(qint64), remove(qint64), contains(qint64), value(QLatin1StringView), value(const QString &), and value(const QCborValue &).

### QCborMap::iterator QCborMap::find(QLatin1StringView key)

### QCborMap::const_iterator QCborMap::find(QLatin1StringView key) const

Returns a map iterator to the key-value pair whose key is key, if the map contains such a pair. If it doesn't, this function returns end().

If the map contains more than one key equal to key, it is undefined which one this function will find. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

See also value(QLatin1StringView), operator[](QLatin1StringView), constFind(QLatin1StringView), remove(QLatin1StringView), contains(QLatin1StringView), value(qint64), value(const QString &), and value(const QCborValue &).

### QCborMap::iterator QCborMap::find(const QCborValue &key)

### QCborMap::const_iterator QCborMap::find(const QCborValue &key) const

Returns a map iterator to the key-value pair whose key is key, if the map contains such a pair. If it doesn't, this function returns end().

If the map contains more than one key equal to key, it is undefined which one this function will find. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

See also value(const QCborValue &), operator[](const QCborValue &), constFind(const QCborValue &), remove(const QCborValue &), contains(const QCborValue &), value(qint64), value(QLatin1StringView), and value(const QString &).

### QCborMap::iterator QCborMap::find(const QString &key)

### QCborMap::const_iterator QCborMap::find(const QString &key) const

Returns a map iterator to the key-value pair whose key is key, if the map contains such a pair. If it doesn't, this function returns end().

If the map contains more than one key equal to key, it is undefined which one this function will find. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

See also value(const QString &), operator[](const QString &), constFind(const QString &), remove(const QString &), contains(const QString &), value(qint64), value(QLatin1StringView), and value(const QCborValue &).

### `[static]` QCborMap QCborMap::fromJsonObject(const QJsonObject &obj)

Converts all JSON items found in the obj object to CBOR using QCborValue::fromJson(), and returns the map composed of those elements.

This conversion is lossless, as the CBOR type system is a superset of JSON's. Moreover, the map returned by this function can be converted back to the original obj by using toJsonObject().

See also toJsonObject(), toVariantMap(), QCborValue::fromJsonValue(), and QCborArray::fromJsonArray().

### `[static noexcept, since 6.3]` QCborMap QCborMap::fromJsonObject(QJsonObject &&obj)

This is an overloaded function.

This function was introduced in Qt 6.3.

### `[static]` QCborMap QCborMap::fromVariantHash(const QVariantHash &hash)

Converts all the items in hash to CBOR using QCborValue::fromVariant() and returns the map composed of those elements.

Conversion from QVariant is not completely lossless. Please see the documentation in QCborValue::fromVariant() for more information.

See also toVariantHash(), fromVariantMap(), fromJsonObject(), and QCborValue::fromVariant().

### `[static]` QCborMap QCborMap::fromVariantMap(const QVariantMap &map)

Converts all the items in map to CBOR using QCborValue::fromVariant() and returns the map composed of those elements.

Conversion from QVariant is not completely lossless. Please see the documentation in QCborValue::fromVariant() for more information.

See also toVariantMap(), fromVariantHash(), fromJsonObject(), and QCborValue::fromVariant().

### QCborMap::iterator QCborMap::insert(QCborMap::value_type v)

Inserts the key-value pair in v into this map and returns a map iterator pointing to the newly inserted pair.

If the map already had a key equal to `v.first`, its value will be overwritten by `v.second`.

This is an overloaded function.

See also operator[], erase(), and extract().

### QCborMap::iterator QCborMap::insert(QLatin1StringView key, const QCborValue &value)

Inserts the key key and value value into this map and returns a map iterator pointing to the newly inserted pair.

If the map already had a key equal to key, its value will be overwritten by value.

This is an overloaded function.

See also erase(), remove(QLatin1StringView), value(QLatin1StringView), operator[](QLatin1StringView), find(QLatin1StringView), contains(QLatin1StringView), take(QLatin1StringView), and extract().

### QCborMap::iterator QCborMap::insert(const QCborValue &key, const QCborValue &value)

Inserts the key key and value value into this map and returns a map iterator pointing to the newly inserted pair.

If the map already had a key equal to key, its value will be overwritten by value.

This is an overloaded function.

See also erase(), remove(const QCborValue &), value(const QCborValue &), operator[](const QCborValue &), find(const QCborValue &), contains(const QCborValue &), take(const QCborValue &), and extract().

### QCborMap::iterator QCborMap::insert(const QString &key, const QCborValue &value)

Inserts the key key and value value into this map and returns a map iterator pointing to the newly inserted pair.

If the map already had a key equal to key, its value will be overwritten by value.

This is an overloaded function.

See also erase(), remove(const QString &), value(const QString &), operator[](const QString &), find(const QString &), contains(const QString &), take(const QString &), and extract().

### QCborMap::iterator QCborMap::insert(qint64 key, const QCborValue &value)

Inserts the key key and value value into this map and returns a map iterator pointing to the newly inserted pair.

If the map already had a key equal to key, its value will be overwritten by value.

This is an overloaded function.

See also erase(), remove(qint64), value(qint64), operator[](qint64), find(qint64), contains(qint64), take(qint64), and extract().

### bool QCborMap::isEmpty() const

Returns true if this map is empty (that is, size() is 0).

See also size() and clear().

### `[since 6.10]` QCborMap::key_value_iterator QCborMap::keyValueBegin()

Returns an STL-style iterator pointing to the first entry in the map.

This function was introduced in Qt 6.10.

See also keyValueEnd().

### `[since 6.10]` QCborMap::const_key_value_iterator QCborMap::keyValueBegin() const

Returns a const STL-style iterator pointing to the first entry in the map.

This function was introduced in Qt 6.10.

See also keyValueEnd().

### `[since 6.10]` QCborMap::key_value_iterator QCborMap::keyValueEnd()

Returns an STL-style iterator pointing to the imaginary entry after the last entry in the map.

This function was introduced in Qt 6.10.

See also keyValueBegin().

### `[since 6.10]` QCborMap::const_key_value_iterator QCborMap::keyValueEnd() const

Returns a const STL-style iterator pointing to the imaginary entry after the last entry in the map.

This function was introduced in Qt 6.10.

See also keyValueBegin().

### QList<QCborValue> QCborMap::keys() const

Returns a list of all keys in this map.

See also QMap::keys() and QHash::keys().

### void QCborMap::remove(const QCborValue &key)

Removes the key key and the corresponding value from the map, if it is found. If the map contains no such key, this function does nothing.

If the map contains more than one key equal to key, it is undefined which one this function will remove. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

remove(qint64), remove(QLatin1StringView), remove(const QString &)

See also value(const QCborValue &), operator[](const QCborValue &), find(const QCborValue &), and contains(const QCborValue &).

### void QCborMap::remove(qint64 key)

Removes the key key and the corresponding value from the map, if it is found. If the map contains no such key, this function does nothing.

If the map contains more than one key equal to key, it is undefined which one this function will remove. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

remove(QLatin1StringView), remove(const QString &), remove(const QCborValue &)

See also value(qint64), operator[](qint64), find(qint64), and contains(qint64).

### void QCborMap::remove(QLatin1StringView key)

Removes the key key and the corresponding value from the map, if it is found. If the map contains no such key, this function does nothing.

If the map contains more than one key equal to key, it is undefined which one this function will remove. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

This is an overloaded function.

See also value(QLatin1StringView), operator[](QLatin1StringView), find(QLatin1StringView), contains(QLatin1StringView), remove(qint64), remove(const QString &), and remove(const QCborValue &).

### void QCborMap::remove(const QString &key)

Removes the key key and the corresponding value from the map, if it is found. If the map contains no such key, this function does nothing.

If the map contains more than one key equal to key, it is undefined which one this function will remove. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

remove(qint64), remove(QLatin1StringView), remove(const QCborValue &)

This is an overloaded function.

See also value(const QString &), operator[](const QString &), find(const QString &), and contains(const QString &).

### `[noexcept]` qsizetype QCborMap::size() const

Returns the number of elements in this map.

See also isEmpty().

### `[noexcept]` void QCborMap::swap(QCborMap &other)

Swaps this map with other. This operation is very fast and never fails.

### QCborValue QCborMap::take(QLatin1StringView key)

Removes the key key and the corresponding value from the map and returns the value, if it is found. If the map contains no such key, this function does nothing.

If the map contains more than one key equal to key, it is undefined which one this function will remove. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

See also value(QLatin1StringView), operator[](QLatin1StringView), find(QLatin1StringView), contains(QLatin1StringView), take(qint64), take(const QString &), take(const QCborValue &), and insert().

### QCborValue QCborMap::take(const QCborValue &key)

Removes the key key and the corresponding value from the map and returns the value, if it is found. If the map contains no such key, this function does nothing.

If the map contains more than one key equal to key, it is undefined which one this function will remove. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

See also value(const QCborValue &), operator[](const QCborValue &), find(const QCborValue &), contains(const QCborValue &), take(QLatin1StringView), take(const QString &), take(qint64), and insert().

### QCborValue QCborMap::take(const QString &key)

Removes the key key and the corresponding value from the map and returns the value, if it is found. If the map contains no such key, this function does nothing.

If the map contains more than one key equal to key, it is undefined which one this function will remove. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

See also value(const QString &), operator[](const QString &), find(const QString &), contains(const QString &), take(QLatin1StringView), take(qint64), take(const QCborValue &), and insert().

### QCborValue QCborMap::take(qint64 key)

Removes the key key and the corresponding value from the map and returns the value, if it is found. If the map contains no such key, this function does nothing.

If the map contains more than one key equal to key, it is undefined which one this function will remove. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

See also value(qint64), operator[](qint64), find(qint64), contains(qint64), take(QLatin1StringView), take(const QString &), take(const QCborValue &), and insert().

### QCborValue QCborMap::toCborValue() const

Explicitly constructs a QCborValue object that represents this map. This function is usually not necessary since QCborValue has a constructor for QCborMap, so the conversion is implicit.

Converting QCborMap to QCborValue allows it to be used in any context where QCborValues can be used, including as keys and mapped types in QCborMap, as well as QCborValue::toCbor().

See also QCborValue::QCborValue(const QCborMap &).

### QJsonObject QCborMap::toJsonObject() const

Recursively converts every QCborValue value in this map to JSON using QCborValue::toJsonValue() and creates a string key for all keys that aren't strings, then returns the corresponding QJsonObject composed of those associations.

Please note that CBOR contains a richer and wider type set than JSON, so some information may be lost in this conversion. For more details on what conversions are applied, see QCborValue::toJsonValue().

###### Map key conversion to string

JSON objects are defined as having string keys, unlike CBOR, so the conversion of a QCborMap to QJsonObject will imply a step of "stringification" of the key values. The conversion will use the special handling of tags and extended types from above and will also convert the rest of the types as follows:

Type | Transformation
--- | ---
Bool | "true" and "false"
Null | "null"
Undefined | "undefined"
Integer | The decimal string form of the number
Double | The decimal string form of the number
Byte array | Unless tagged differently (see above), encoded as Base64url
Array | Replaced by the compact form of its Diagnostic notation
Map | Replaced by the compact form of its Diagnostic notation
Tags and extended types | Tag number is dropped and the tagged value is converted to string

See also fromJsonObject(), QCborValue::toJsonValue(), QCborArray::toJsonArray(), and toVariantMap().

### QVariantHash QCborMap::toVariantHash() const

Converts the CBOR values to QVariant using QCborValue::toVariant() and "stringifies" all the CBOR keys in this map, returning the QVariantHash that results from that association list.

QVariantMaps have string keys, unlike CBOR, so the conversion of a QCborMap to QVariantMap will imply a step of "stringification" of the key values. See QCborMap::toJsonObject() for details.

In addition, the conversion to QVariant is not completely lossless. Please see the documentation in QCborValue::toVariant() for more information.

See also fromVariantHash(), toVariantMap(), toJsonObject(), QCborValue::toVariant(), and QCborArray::toVariantList().

### QVariantMap QCborMap::toVariantMap() const

Converts the CBOR values to QVariant using QCborValue::toVariant() and "stringifies" all the CBOR keys in this map, returning the QVariantMap that results from that association list.

QVariantMaps have string keys, unlike CBOR, so the conversion of a QCborMap to QVariantMap will imply a step of "stringification" of the key values. See QCborMap::toJsonObject() for details.

In addition, the conversion to QVariant is not completely lossless. Please see the documentation in QCborValue::toVariant() for more information.

See also fromVariantMap(), toVariantHash(), toJsonObject(), QCborValue::toVariant(), and QCborArray::toVariantList().

### QCborValue QCborMap::value(const QCborValue &key) const

Returns the QCborValue element in this map that corresponds to key key, if there is one.

If the map does not contain key key, this function returns a QCborValue containing an undefined value. For that reason, it is not possible with this function to tell apart the situation where the key was not present from the situation where the key was mapped to an undefined value.

If the map contains more than one key equal to key, it is undefined which one this function will return. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

value(qint64), value(QLatin1StringView), value(const QString &)

See also operator[](const QCborValue &), find(const QCborValue &), constFind(const QCborValue &), remove(const QCborValue &), and contains(const QCborValue &).

### QCborValue QCborMap::value(qint64 key) const

Returns the QCborValue element in this map that corresponds to key key, if there is one. CBOR recommends using integer keys, since they occupy less space and are simpler to encode and decode.

If the map does not contain key key, this function returns a QCborValue containing an undefined value. For that reason, it is not possible with this function to tell apart the situation where the key was not present from the situation where the key was mapped to an undefined value.

If the map contains more than one key equal to key, it is undefined which one the return from function will reference. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

value(QLatin1StringView), value(const QString &), value(const QCborValue &)

See also operator[](qint64), find(qint64), constFind(qint64), remove(qint64), and contains(qint64).

### QCborValue QCborMap::value(QLatin1StringView key) const

Returns the QCborValue element in this map that corresponds to key key, if there is one.

If the map does not contain key key, this function returns a QCborValue containing an undefined value. For that reason, it is not possible with this function to tell apart the situation where the key was not present from the situation where the key was mapped to an undefined value.

If the map contains more than one key equal to key, it is undefined which one this function will return. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

value(qint64), value(const QString &), value(const QCborValue &)

This is an overloaded function.

See also operator[](QLatin1StringView), find(QLatin1StringView), constFind(QLatin1StringView), remove(QLatin1StringView), and contains(QLatin1StringView).

### QCborValue QCborMap::value(const QString &key) const

Returns the QCborValue element in this map that corresponds to key key, if there is one.

If the map does not contain key key, this function returns a QCborValue containing an undefined value. For that reason, it is not possible with this function to tell apart the situation where the key was not present from the situation where the key was mapped to an undefined value.

If the map contains more than one key equal to key, it is undefined which one this function will return. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

value(qint64), value(QLatin1StringView), value(const QCborValue &)

This is an overloaded function.

See also operator[](const QString &), find(const QString &), constFind(const QString &), remove(const QString &), and contains(const QString &).

### `[noexcept, since 6.10]` QCborMap &QCborMap::operator=(QCborMap &&other)

Move-assignment operator.

The moved-from object other is placed in a valid, but unspecified state.

This function was introduced in Qt 6.10.

### `[noexcept]` QCborMap &QCborMap::operator=(const QCborMap &other)

Replaces the contents of this object with a copy of other, then returns a reference to this object.

### QCborValueRef QCborMap::operator[](qint64 key)

Returns a QCborValueRef to the value in this map that corresponds to key key. CBOR recommends using integer keys, since they occupy less space and are simpler to encode and decode.

QCborValueRef has the exact same API as QCborValue, with one important difference: if you assign new values to it, this map will be updated with that new value.

If the map did not have a key equal to key, one is inserted and this function returns a reference to the new value, which will be a QCborValue with an undefined value. For that reason, it is not possible with this function to tell apart the situation where the key was not present from the situation where the key was mapped to an undefined value.

If the map contains more than one key equal to key, it is undefined which one the return will reference. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

See also value(qint64), find(qint64), contains(qint64), remove(qint64), operator[](QLatin1StringView), operator[](const QString &), and operator[](const QCborValue &).

### const QCborValue QCborMap::operator[](const QCborValue &key) const

Returns the QCborValue element in this map that corresponds to key key, if there is one.

If the map does not contain key key, this function returns a QCborValue containing an undefined value. For that reason, it is not possible with this function to tell apart the situation where the key was not present from the situation where the key was mapped to an undefined value.

If the map contains more than one key equal to key, it is undefined which one this function will return. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

operator[](qint64), operator[](QLatin1StringView), operator[](const QCborOperator[] &)

See also value(const QCborValue &), find(const QCborValue &), constFind(const QCborValue &), remove(const QCborValue &), and contains(const QCborValue &).

### const QCborValue QCborMap::operator[](qint64 key) const

Returns the QCborValue element in this map that corresponds to key key, if there is one. CBOR recommends using integer keys, since they occupy less space and are simpler to encode and decode.

If the map does not contain key key, this function returns a QCborValue containing an undefined value. For that reason, it is not possible with this function to tell apart the situation where the key was not present from the situation where the key was mapped to an undefined value.

If the map contains more than one key equal to key, it is undefined which one this function will return. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

operator[](QLatin1StringView), operator[](const QString &), operator[](const QCborOperator[] &)

See also value(qint64), find(qint64), constFind(qint64), remove(qint64), and contains(qint64).

### QCborValueRef QCborMap::operator[](QLatin1StringView key)

Returns a QCborValueRef to the value in this map that corresponds to key key.

QCborValueRef has the exact same API as QCborValue, with one important difference: if you assign new values to it, this map will be updated with that new value.

If the map did not have a key equal to key, one is inserted and this function returns a reference to the new value, which will be a QCborValue with an undefined value. For that reason, it is not possible with this function to tell apart the situation where the key was not present from the situation where the key was mapped to an undefined value.

If the map contains more than one key equal to key, it is undefined which one the return will reference. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

This is an overloaded function.

See also value(QLatin1StringView), find(QLatin1StringView), contains(QLatin1StringView), remove(QLatin1StringView), operator[](qint64), operator[](const QString &), and operator[](const QCborValue &).

### QCborValueRef QCborMap::operator[](const QCborValue &key)

Returns a QCborValueRef to the value in this map that corresponds to key key.

QCborValueRef has the exact same API as QCborValue, with one important difference: if you assign new values to it, this map will be updated with that new value.

If the map did not have a key equal to key, one is inserted and this function returns a reference to the new value, which will be a QCborValue with an undefined value. For that reason, it is not possible with this function to tell apart the situation where the key was not present from the situation where the key was mapped to an undefined value.

If the map contains more than one key equal to key, it is undefined which one the return will reference. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

This is an overloaded function.

See also value(const QCborValue &), find(const QCborValue &), contains(const QCborValue &), remove(const QCborValue &), operator[](qint64), operator[](QLatin1StringView), and operator[](const QString &).

### QCborValueRef QCborMap::operator[](const QString &key)

Returns a QCborValueRef to the value in this map that corresponds to key key.

QCborValueRef has the exact same API as QCborValue, with one important difference: if you assign new values to it, this map will be updated with that new value.

If the map did not have a key equal to key, one is inserted and this function returns a reference to the new value, which will be a QCborValue with an undefined value. For that reason, it is not possible with this function to tell apart the situation where the key was not present from the situation where the key was mapped to an undefined value.

If the map contains more than one key equal to key, it is undefined which one the return will reference. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

This is an overloaded function.

See also value(const QString &), find(const QString &), contains(const QString &), remove(const QString &), operator[](qint64), operator[](QLatin1StringView), and operator[](const QCborValue &).

### const QCborValue QCborMap::operator[](QLatin1StringView key) const

Returns the QCborValue element in this map that corresponds to key key, if there is one.

If the map does not contain key key, this function returns a QCborValue containing an undefined value. For that reason, it is not possible with this function to tell apart the situation where the key was not present from the situation where the key was mapped to an undefined value.

If the map contains more than one key equal to key, it is undefined which one this function will return. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

operator[](qint64), operator[](const QString &), operator[](const QCborOperator[] &)

This is an overloaded function.

See also value(QLatin1StringView), find(QLatin1StringView), constFind(QLatin1StringView), remove(QLatin1StringView), and contains(QLatin1StringView).

### const QCborValue QCborMap::operator[](const QString &key) const

Returns the QCborValue element in this map that corresponds to key key, if there is one.

If the map does not contain key key, this function returns a QCborValue containing an undefined value. For that reason, it is not possible with this function to tell apart the situation where the key was not present from the situation where the key was mapped to an undefined value.

If the map contains more than one key equal to key, it is undefined which one this function will return. QCborMap does not allow inserting duplicate keys, but it is possible to create such a map by decoding a CBOR stream with them. They are usually not permitted and having duplicate keys is usually an indication of a problem in the sender.

operator[](qint64), operator[](QLatin1StringView), operator[](const QCborOperator[] &)

This is an overloaded function.

See also value(const QString &), find(const QString &), constFind(const QString &), remove(const QString &), and contains(const QString &).

## Related Non-Members

### `[noexcept]` bool operator!=(const QCborMap &lhs, const QCborMap &rhs)

Compares lhs and rhs maps, comparing each element in sequence, and returns true if the two maps contain any different elements or elements in different orders, false otherwise.

Note that CBOR maps are unordered, which means that two maps containing the very same pairs but in different order will still compare differently. To avoid this, it is recommended to insert elements into the map in a predictable order, such as by ascending key value. In fact, maps with keys in sorted order are required for Canonical CBOR representation.

For more information on CBOR equality in Qt, see, QCborValue::compare().

See also compare(), QCborValue::operator==(), operator==(), and operator<().

### `[noexcept]` bool operator<(const QCborMap &lhs, const QCborMap &rhs)

Compares lhs and rhs maps, comparing each element in sequence, and returns true if lhs map should be sorted before rhs, false otherwise.

Note that CBOR maps are unordered, which means that two maps containing the very same pairs but in different order will still compare differently. To avoid this, it is recommended to insert elements into the map in a predictable order, such as by ascending key value. In fact, maps with keys in sorted order are required for Canonical CBOR representation.

For more information on CBOR sorting order, see QCborValue::compare().

See also compare(), QCborValue::operator==(), QCborMap::operator==(), operator==(), and operator!=().

### `[noexcept]` bool operator<=(const QCborMap &lhs, const QCborMap &rhs)

Compares lhs and rhs maps, comparing each element in sequence, and returns true if lhs map should be sorted before rhs or if the two maps contain the same elements in the same order, false otherwise.

Note that CBOR maps are unordered, which means that two maps containing the very same pairs but in different order will still compare differently. To avoid this, it is recommended to insert elements into the map in a predictable order, such as by ascending key value. In fact, maps with keys in sorted order are required for Canonical CBOR representation.

For more information on CBOR sorting order, see QCborValue::compare().

See also compare(), QCborValue::operator==(), QCborMap::operator==(), operator==(), and operator!=().

### `[noexcept]` bool operator==(const QCborMap &lhs, const QCborMap &rhs)

Compares lhs and rhs maps, comparing each element in sequence, and returns true if the two maps contain the same elements in the same order, false otherwise.

Note that CBOR maps are unordered, which means that two maps containing the very same pairs but in different order will still compare differently. To avoid this, it is recommended to insert elements into the map in a predictable order, such as by ascending key value. In fact, maps with keys in sorted order are required for Canonical CBOR representation.

For more information on CBOR equality in Qt, see, QCborValue::compare().

See also compare(), QCborValue::operator==(), operator!=(), and operator<().

### `[noexcept]` bool operator>(const QCborMap &lhs, const QCborMap &rhs)

Compares lhs and rhs maps, comparing each element in sequence, and returns true if lhs map should be sorted after rhs, false otherwise.

Note that CBOR maps are unordered, which means that two maps containing the very same pairs but in different order will still compare differently. To avoid this, it is recommended to insert elements into the map in a predictable order, such as by ascending key value. In fact, maps with keys in sorted order are required for Canonical CBOR representation.

For more information on CBOR sorting order, see QCborValue::compare().

See also compare(), QCborValue::operator==(), QCborMap::operator==(), operator==(), and operator!=().

### `[noexcept]` bool operator>=(const QCborMap &lhs, const QCborMap &rhs)

Compares lhs and rhs maps, comparing each element in sequence, and returns true if lhs map should be sorted after rhs or if the two maps contain the same elements in the same order, false otherwise.

Note that CBOR maps are unordered, which means that two maps containing the very same pairs but in different order will still compare differently. To avoid this, it is recommended to insert elements into the map in a predictable order, such as by ascending key value. In fact, maps with keys in sorted order are required for Canonical CBOR representation.

For more information on CBOR sorting order, see QCborValue::compare().

See also compare(), QCborValue::operator==(), QCborMap::operator==(), operator==(), and operator!=().