QCborMap类
QCborMap类用于存储表示为CBOR的关联容器。 更多信息...
头文件 | #include <QCborMap> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
- 所有成员列表,包括继承成员
- QCborMap是Qt中的CBOR支持的一部分。
注意:此类中所有函数都是可重入的。
公有类型
公有函数
QCborMap() | |
QCborMap(std::initializer_list<QCborMap::value_type> args) | |
QCborMap(const QCborMap &other) | |
~QCborMap() | |
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 QString &key) const |
QCborMap::const_iterator | constFind(const QCborValue &key) const |
bool | contains(qint64 key) const |
bool | contains(QLatin1StringView key) const |
bool | contains(const QString &key) const |
bool | contains(const QCborValue &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::iterator it) |
QCborValue | extract(QCborMap::const_iterator it) |
QCborMap::iterator | find(qint64 key) |
QCborMap::iterator | find(QLatin1StringView key) |
QCborMap::iterator | find(const QString &key) |
QCborMap::iterator | find(const QCborValue &key) |
QCborMap::const_iterator | find(qint64 key) const |
QCborMap::const_iterator | find(QLatin1StringView key) const |
QCborMap::const_iterator | find(const QString &key) const |
QCborMap::const_iterator | find(const QCborValue &key) const |
QCborMap::iterator | insert(qint64 key, const QCborValue &value) |
QCborMap::iterator | insert(QLatin1StringView key, const QCborValue &value) |
QCborMap::iterator | insert(const QString &key, const QCborValue &value) |
QCborMap::iterator | insert(const QCborValue &key, const QCborValue &value) |
QCborMap::iterator | insert(QCborMap::value_type v) |
bool | isEmpty() const |
QList<QCborValue> | keys() const |
void | remove(qint64 key) |
void | remove(QLatin1StringView key) |
void | remove(const QString &key) |
void | remove(const QCborValue &key) |
qsizetype | size() const |
void | swap(QCborMap &other) |
QCborValue | take(qint64 key) |
QCborValue | take(QLatin1StringView key) |
QCborValue | take(const QString &key) |
QCborValue | take(const QCborValue &key) |
QCborValue | toCborValue() const |
QJsonObject | toJsonObject() const |
QVariantHash | toVariantHash() const |
QVariantMap | toVariantMap() const |
QCborValue | value(qint64 key) const |
QCborValue | value(QLatin1StringView key) const |
QCborValue | value(const QString &key) const |
QCborValue | value(const QCborValue &key) const |
bool | operator!=(const QCborMap &other) const |
bool | operator<(const QCborMap &other) const |
QCborMap & | operator=(const QCborMap &other) |
bool | operator==(const QCborMap &other) const |
const QCborValue | operator[](qint64 key) const |
const QCborValue | operator[](QLatin1StringView key) const |
const QCborValue | operator[](const QString &key) const |
const QCborValue | operator[](const QCborValue &key) const |
QCborValueRef | operator[](qint64 key) |
QCborValueRef | operator[](QLatin1StringView key) |
QCborValueRef | operator[](const QString &key) |
QCborValueRef | operator[](const QCborValue &key) |
静态公有成员
QCborMap | fromJsonObject(const QJsonObject &obj) |
(从 6.3 开始) QCborMap | fromJsonObject(QJsonObject &&obj) |
QCborMap | fromVariantHash(const QVariantHash &hash) |
QCborMap | fromVariantMap(const QVariantMap &map) |
详细描述
此类可以用于在CBOR中持有关联容器,它是一个键和值类型之间的映射。CBOR是紧凑二进制对象表示法,是一种非常紧凑的二进制数据编码方式,它是JSON的超集。它是IETF受限制的RESTful环境(CoRE)工作组创建的,该团队已在许多新的RFC中使用它。它旨在与CoAP协议一起使用。
与JSON和QVariantMap不同,CBOR映射键可以是任何类型,而不仅仅是字符串。因此,QCborMap实际上是QCborValue键到QCborValue值元素的映射。
然而,对于所有接受键参数的成员函数,QCborMap提供了有效率的整数和字符串的复载。实际上,鼓励使用整数键,因为它们占用的字节数较少,编码和解码更简单。IETF CoRE WG设计的用于专门与CBOR一起工作的较新协议已知使用它们。
QCborMap未排序,因此查找键具有线性复杂性(O(n))。实际上,QCborMap按照它们插入的顺序保留元素,这意味着可以通过小心按顺序插入元素来创建排序的QCborMap。CBOR不要求排序,但建议这样做。
QCborMap还可以转换为和从QVariantMap和QJsonObject。然而,在执行转换时,任何非字符串键都会使用一种单程方法进行字符串化,这种方法在转换回QCborMap时将无法撤销。
另请参阅QCborArray、QCborValue、QJsonDocument、QVariantMap、解析和显示CBOR数据、序列化转换器和保存和加载游戏。
成员类型文档
QCborMap::const_iterator
QCborMap::iterator
QCborMap::Iterator的同义词。
QCborMap::key_type
该映射的键类型。由于QCborMap键可以是任何CBOR类型,这为一个QCborValue。
QCborMap::mapped_type
映射到(即值)的类型,即QCborValue。
QCborMap::size_type
QCBORMap使用大小的类型。
QCborMap::value_type
存储在此容器中的值:一组QCborValues
成员函数文档
QCborMap::iterator QCborMap::find(qint64 key)
QCborMap::const_iterator QCborMap::find(qint64 key) const
如果映射包含具有key键的键值对,则返回映射迭代器到该键值对。如果没有,此函数返回end()。
CBOR建议使用整数键,因为它们占用更少的空间,编码和解码更简单。
如果映射中包含多个等于 key 的键,则该函数会找到哪一个是不确定的。 QCborMap 不允许插入重复的键,但可以通过对包含这些键的 CBOR 流进行解码来创建这样的映射。这些键通常是不被允许的,而有重复的键通常表明发送者存在问题。
另请参阅 value(qint64), operator[](qint64), constFind(qint64), remove(qint64), contains(qint64), value(QLatin1StringView), value(const QString &), 和 value(const QCborValue &).
QCborMap::iterator QCborMap::find(QLatin1StringView key)
QCborMap::const_iterator QCborMap::find(QLatin1StringView key) const
这是一个重载函数。
如果映射包含具有key键的键值对,则返回映射迭代器到该键值对。如果没有,此函数返回end()。
如果映射中包含多个等于 key 的键,则该函数会找到哪一个是不确定的。 QCborMap 不允许插入重复的键,但可以通过对包含这些键的 CBOR 流进行解码来创建这样的映射。这些键通常是不被允许的,而有重复的键通常表明发送者存在问题。
另请参阅 value(QLatin1StringView), operator[](QLatin1StringView), constFind(QLatin1StringView), remove(QLatin1StringView), contains(QLatin1StringView), value(qint64), value(const QString &), 和 value(const QCborValue &).
QCborMap::iterator QCborMap::find(const QString &key)
QCborMap::const_iterator QCborMap::find(const QString &key) const
这是一个重载函数。
如果映射包含具有key键的键值对,则返回映射迭代器到该键值对。如果没有,此函数返回end()。
如果映射中包含多个等于 key 的键,则该函数会找到哪一个是不确定的。 QCborMap 不允许插入重复的键,但可以通过对包含这些键的 CBOR 流进行解码来创建这样的映射。这些键通常是不被允许的,而有重复的键通常表明发送者存在问题。
另请参阅 value(const QString &), operator[](const QString &), constFind(const QString &), remove(const QString &), contains(const QString &), value(qint64), value(QLatin1StringView), 和 value(const QCborValue &).
QCborMap::iterator QCborMap::find(const QCborValue &key)
QCborMap::const_iterator QCborMap::find(const QCborValue &key) const
这是一个重载函数。
如果映射包含具有key键的键值对,则返回映射迭代器到该键值对。如果没有,此函数返回end()。
如果映射中包含多个等于 key 的键,则该函数会找到哪一个是不确定的。 QCborMap 不允许插入重复的键,但可以通过对包含这些键的 CBOR 流进行解码来创建这样的映射。这些键通常是不被允许的,而有重复的键通常表明发送者存在问题。
另请参阅 value(const QCborValue &), operator[](const QCborValue &), constFind(const QCborValue &), remove(const QCborValue &), contains(const QCborValue &), value(qint64), value(QLatin1StringView), 和 value(const QString &).
QCborValue QCborMap::extract(QCborMap::const_iterator it)
QCborValue QCborMap::extract(QCborMap::iterator it)
从由迭代器it指示的位置提取映射中的值,并返回提取的值。
另请参阅insert(),erase(),take()和remove()。
[noexcept]
QCborMap::QCborMap()
构造一个空CBOR映射对象。
另请参阅isEmpty()。
QCborMap::QCborMap(std::initializer_list<QCborMap::value_type> args)
从args中的花括号初始化列表构建QCborMap,如下例所示
QCborMap map = { {0, "Hello"}, {1, "World"}, {"foo", nullptr}, {"bar", QCborArray{0, 1, 2, 3, 4}} };
[noexcept]
QCborMap::QCborMap(const QCborMap &other)
创建一个other的副本的QCborMap对象。
[noexcept]
QCborMap::~QCborMap()
销毁这个QCborMap对象并释放它所拥有的任何相关资源。
QCborMap::iterator QCborMap::begin()
返回一个指向此映射第一个键值对的映射迭代器。如果此映射为空,则返回的迭代器将与end()相同。
另请参阅constBegin()和end()。
QCborMap::const_iterator QCborMap::begin() const
返回一个指向此映射第一个键值对的映射迭代器。如果此映射为空,则返回的迭代器将与constEnd()相同。
QCborMap::const_iterator QCborMap::cbegin() const
返回一个指向此映射第一个键值对的映射迭代器。如果此映射为空,则返回的迭代器将与constEnd()相同。
QCborMap::const_iterator QCborMap::cend() const
返回一个表示map中最后一个元素之后元素的map迭代器。
另请参阅begin(),constBegin(),find()和constFind()。
void QCborMap::clear()
清空此映射。
另请参阅isEmpty()。
[noexcept]
int QCborMap::compare(const QCborMap &other) const
比较此映射和other,逐个比较每个元素,并返回一个整数,指示此映射是否应该在(如果结果是负数)或其他之前(如果结果是正数)排序。如果此函数返回0,则两个映射相等且包含相同的元素。
请注意,CBOR映射是无序的,这意味着包含相同键值对但在不同顺序的两个映射仍然会进行比较不同。为了避免这种情况,建议以可预测的顺序将元素插入映射中,例如按升序键值。事实上,为了实现规范CBOR表示,需要地图中的键是有序的。
有关CBOR排序顺序的更多信息,请参阅QCborValue::compare。
另请参阅QCborValue::compare()、QCborArray::compare()和operator==()。
QCborMap::const_iterator QCborMap::constBegin() const
返回一个指向此映射第一个键值对的映射迭代器。如果此映射为空,则返回的迭代器将与constEnd()相同。
QCborMap::const_iterator QCborMap::constEnd() const
返回一个表示map中最后一个元素之后元素的map迭代器。
另请参阅begin(),constBegin(),find()和constFind()。
QCborMap::const_iterator QCborMap::constFind(qint64 key) const
如果映射中包含具有key的键值对,则返回一个指向该键值对的映射迭代器。如果没有,此函数返回constEnd()。
CBOR建议使用整数键,因为它们占用更少的空间,编码和解码更简单。
如果映射中包含多个等于 key 的键,则该函数会找到哪一个是不确定的。 QCborMap 不允许插入重复的键,但可以通过对包含这些键的 CBOR 流进行解码来创建这样的映射。这些键通常是不被允许的,而有重复的键通常表明发送者存在问题。
另请参阅value(qint64)、operator[](qint64)、find(qint64)、remove(qint64)、contains(qint64)、value(QLatin1StringView)、value(const QString &)和value(const QCborValue &).
QCborMap::const_iterator QCborMap::constFind(QLatin1StringView key) const
这是一个重载函数。
如果映射中包含具有key的键值对,则返回一个指向该键值对的映射迭代器。如果没有,此函数返回constEnd()。
如果映射中包含多个等于 key 的键,则该函数会找到哪一个是不确定的。 QCborMap 不允许插入重复的键,但可以通过对包含这些键的 CBOR 流进行解码来创建这样的映射。这些键通常是不被允许的,而有重复的键通常表明发送者存在问题。
另请参阅value(QLatin1StringView)、operator[](QLatin1StringView)、find(QLatin1StringView)、remove(QLatin1StringView)、contains(QLatin1StringView)、value(qint64)、value(const QString &)和value(const QCborValue &).
QCborMap::const_iterator QCborMap::constFind(const QString &key) const
这是一个重载函数。
如果映射中包含具有key的键值对,则返回一个指向该键值对的映射迭代器。如果没有,此函数返回constEnd()。
如果映射中包含多个等于 key 的键,则该函数会找到哪一个是不确定的。 QCborMap 不允许插入重复的键,但可以通过对包含这些键的 CBOR 流进行解码来创建这样的映射。这些键通常是不被允许的,而有重复的键通常表明发送者存在问题。
另请参阅value(const QString &)、operator[](const QString &)、find(const QString &)、remove(const QString &)、contains(const QString &)、value(qint64)、value(QLatin1StringView)和value(const QCborValue &).
QCborMap::const_iterator QCborMap::constFind(const QCborValue &key) const
这是一个重载函数。
如果映射中包含具有key的键值对,则返回一个指向该键值对的映射迭代器。如果没有,此函数返回constEnd()。
如果映射中包含多个等于 key 的键,则该函数会找到哪一个是不确定的。 QCborMap 不允许插入重复的键,但可以通过对包含这些键的 CBOR 流进行解码来创建这样的映射。这些键通常是不被允许的,而有重复的键通常表明发送者存在问题。
另请参阅value(const QCborValue &)、operator[](const QCborValue &)、find(const QCborValue &)、remove(const QCborValue &)、contains(const QCborValue &)、value(qint64)、value(QLatin1StringView)和value(const QString &).
bool QCborMap::contains(qint64 key) const
当此映射包含由键 key 标识的键值对时返回 true。CBOR 推荐使用整数键,因为它们占用的空间更少,更易于编码和解码。
也见
bool QCborMap::contains(QLatin1StringView key) const
这是一个重载函数。
当此映射包含由键 key 标识的键值对时返回 true。
也见
bool QCborMap::contains(const QString &key) const
这是一个重载函数。
当此映射包含由键 key 标识的键值对时返回 true。
也见
bool QCborMap::contains(const QCborValue &key) const
当此映射包含由键 key 标识的键值对时返回 true。
也见
bool QCborMap::empty() const
与 isEmpty 等效。此函数是为与使用标准库 API 的泛型代码兼容而提供的。
如果此映射为空(size() == 0)则返回 true。
QCborMap::iterator QCborMap::end()
返回一个表示map中最后一个元素之后元素的map迭代器。
另请参阅begin(),constBegin(),find()和constFind()。
QCborMap::const_iterator QCborMap::end() const
返回一个表示map中最后一个元素之后元素的map迭代器。
另请参阅begin(),constBegin(),find()和constFind()。
QCborMap::iterator QCborMap::erase(QCborMap::const_iterator it)
删除由映射迭代器 it 指向的键值对,并返回移除后的下一个元素的指针。
也见 remove(), begin(), end(), insert(), 和 extract().
QCborMap::iterator QCborMap::erase(QCborMap::iterator it)
这是一个重载函数。
删除由映射迭代器 it 指向的键值对,并返回移除后的下一个元素的指针。
另请参阅 remove(),begin(),end()和insert()。
[静态]
QCborMap QCborMap::fromJsonObject(const QJsonObject &obj)
将obj对象中找到的所有JSON项转换为CBOR,使用QCborValue::fromJson(),并返回由这些元素组成的映射。
此转换是无损的,因为CBOR类型系统是JSON的超集。此外,此函数返回的映射可以通过使用toJsonObject()转换回原始的obj。
另请参阅 toJsonObject(),toVariantMap(),QCborValue::fromJsonValue()和QCborArray::fromJsonArray()。
[静态 noexcept, since 6.3]
QCborMap QCborMap::fromJsonObject(QJsonObject &&obj)
这是一个重载函数。
此函数在Qt 6.3中引入。
[静态]
QCborMap QCborMap::fromVariantHash(const QVariantHash &hash)
使用QCborValue::fromVariant()将hash中的所有项转换为CBOR,并返回由这些元素组成的映射。
从QVariant的转换并不完全是无损的。请参阅QCborValue::fromVariant()中的文档以获取更多信息。
另请参阅 toVariantHash(),fromVariantMap(),fromJsonObject()和QCborValue::fromVariant()。
[静态]
QCborMap QCborMap::fromVariantMap(const QVariantMap &map)
使用QCborValue::fromVariant()将map中的所有项转换为CBOR,并返回由这些元素组成的映射。
从QVariant的转换并不完全是无损的。请参阅QCborValue::fromVariant()中的文档以获取更多信息。
另请参阅 toVariantMap(),fromVariantHash(),fromJsonObject()和QCborValue::fromVariant()。
QCborMap::iterator QCborMap::insert(qint64 key, const QCborValue &value)
这是一个重载函数。
将键key和值value插入到映射中,并返回指向新插入对子的映射迭代器。
如果映射已经有等于key的键,其值将被value覆盖。
另请参阅 erase(),remove(qint64),value(qint64),operator[](qint64),find(qint64),contains(qint64),take(qint64)和extract().
QCborMap::iterator QCborMap::insert(QLatin1StringView key, const QCborValue &value)
这是一个重载函数。
将键key和值value插入到映射中,并返回指向新插入对子的映射迭代器。
如果映射已经有等于key的键,其值将被value覆盖。
另请参阅 erase(),remove(QLatin1StringView),value(QLatin1StringView),operator[](QLatin1StringView),find(QLatin1StringView),contains(QLatin1StringView),take(QLatin1StringView),以及 extract。
QCborMap::iterator QCborMap::insert(const QString &key, const QCborValue &value)
这是一个重载函数。
将键key和值value插入到映射中,并返回指向新插入对子的映射迭代器。
如果映射已经有等于key的键,其值将被value覆盖。
另请参阅 erase(),remove(const QString &), value(const QString &), operator[](const QString &), find(const QString &), contains(const QString &), take(const QString &), 以及 extract。
QCborMap::iterator QCborMap::insert(const QCborValue &key, const QCborValue &value)
这是一个重载函数。
将键key和值value插入到映射中,并返回指向新插入对子的映射迭代器。
如果映射已经有等于key的键,其值将被value覆盖。
另请参阅 erase(),remove(const QCborValue &), value(const QCborValue &), operator[](const QCborValue &), find(const QCborValue &), contains(const QCborValue &), take(const QCborValue &), 以及 extract。
QCborMap::iterator QCborMap::insert(QCborMap::value_type v)
这是一个重载函数。
将键值对 v 插入到该映射中,并返回指向新插入对的映射迭代器。
如果映射已经有一个等于 v.first
的键,则其值将被 v.second
覆盖。
另请参阅 operator[],erase(),以及 extract。
bool QCborMap::isEmpty() const
如果此映射为空(即 size() 为 0),则返回 true。
QList<QCborValue> QCborMap::keys() const
返回该映射中所有键的列表。
另请参阅 QMap::keys() 和 QHash::keys。
void QCborMap::remove(qint64 key)
如果映射中存在该键 key,则从映射中删除该键及其对应的值。如果映射不包含此类键,则此函数不执行任何操作。
如果映射中包含多个与键相等的键,那么这个函数将移除哪一个是不确定的。QCborMap不允许插入重复键,但可以通过对CBOR流进行解码来创建这样的映射。通常不允许这样做,并且具有重复键通常表明发送者存在问题。
remove(QLatin1StringView), remove(const QString &), remove(const QCborValue &)
另请参阅value(qint64), operator[](qint64), find(qint64), contains(qint64).
void QCborMap::remove(QLatin1StringView key)
这是一个重载函数。
如果映射中存在该键 key,则从映射中删除该键及其对应的值。如果映射不包含此类键,则此函数不执行任何操作。
如果映射中包含多个与键相等的键,那么这个函数将移除哪一个是不确定的。QCborMap不允许插入重复键,但可以通过对CBOR流进行解码来创建这样的映射。通常不允许这样做,并且具有重复键通常表明发送者存在问题。
另请参阅value(QLatin1StringView), operator[](QLatin1StringView), find(QLatin1StringView), contains(QLatin1StringView), remove(qint64), remove(const QString &), 和 remove(const QCborValue &).
void QCborMap::remove(const QString &key)
这是一个重载函数。
如果映射中存在该键 key,则从映射中删除该键及其对应的值。如果映射不包含此类键,则此函数不执行任何操作。
如果映射中包含多个与键相等的键,那么这个函数将移除哪一个是不确定的。QCborMap不允许插入重复键,但可以通过对CBOR流进行解码来创建这样的映射。通常不允许这样做,并且具有重复键通常表明发送者存在问题。
remove(qint64), remove(QLatin1StringView), remove(const QCborValue &)
另请参阅value(const QString &), operator[](const QString &), find(const QString &), 和 contains(const QString &).
void QCborMap::remove(const QCborValue &key)
如果映射中存在该键 key,则从映射中删除该键及其对应的值。如果映射不包含此类键,则此函数不执行任何操作。
如果映射中包含多个与键相等的键,那么这个函数将移除哪一个是不确定的。QCborMap不允许插入重复键,但可以通过对CBOR流进行解码来创建这样的映射。通常不允许这样做,并且具有重复键通常表明发送者存在问题。
remove(qint64), remove(QLatin1StringView), remove(const QString &)
另请参阅value(const QCborValue &), operator[](const QCborValue &), find(const QCborValue &), 和 contains(const QCborValue &).
[noexcept]
qsizetype QCborMap::size() const
返回本映射中的元素数量。
另请参阅isEmpty()。
[noexcept]
void QCborMap::swap(QCborMap &other)
交换本映射和other映射的内容。
QCborValue QCborMap::take(qint64 key)
从映射中移除键key及其相应的值,如果找到了,则返回该值。如果没有这样的键,则此函数不会执行任何操作。
如果映射中包含多个与键相等的键,那么这个函数将移除哪一个是不确定的。QCborMap不允许插入重复键,但可以通过对CBOR流进行解码来创建这样的映射。通常不允许这样做,并且具有重复键通常表明发送者存在问题。
另请参阅value(qint64), operator[](qint64), find(qint64), contains(qint64), take(QLatin1StringView), take(const QString &), take(const QCborValue &), 和 insert。
QCborValue QCborMap::take(QLatin1StringView key)
从映射中移除键key及其相应的值,如果找到了,则返回该值。如果没有这样的键,则此函数不会执行任何操作。
如果映射中包含多个与键相等的键,那么这个函数将移除哪一个是不确定的。QCborMap不允许插入重复键,但可以通过对CBOR流进行解码来创建这样的映射。通常不允许这样做,并且具有重复键通常表明发送者存在问题。
也请参阅 value(QLatin1StringView), operator[](QLatin1StringView), find(QLatin1StringView), contains(QLatin1StringView), take(qint64), take(const QString &), take(const QCborValue &), 以及 insert。
QCborValue QCborMap::take(const QString &key)
从映射中移除键key及其相应的值,如果找到了,则返回该值。如果没有这样的键,则此函数不会执行任何操作。
如果映射中包含多个与键相等的键,那么这个函数将移除哪一个是不确定的。QCborMap不允许插入重复键,但可以通过对CBOR流进行解码来创建这样的映射。通常不允许这样做,并且具有重复键通常表明发送者存在问题。
也请参阅 value(const QString &), operator[](const QString &), find(const QString &), contains(const QString &), take(QLatin1StringView), take(qint64), take(const QCborValue &), 以及 insert。
QCborValue QCborMap::take(const QCborValue &key)
从映射中移除键key及其相应的值,如果找到了,则返回该值。如果没有这样的键,则此函数不会执行任何操作。
如果映射中包含多个与键相等的键,那么这个函数将移除哪一个是不确定的。QCborMap不允许插入重复键,但可以通过对CBOR流进行解码来创建这样的映射。通常不允许这样做,并且具有重复键通常表明发送者存在问题。
也请参阅 value(const QCborValue &), operator[](const QCborValue &), find(const QCborValue &), contains(const QCborValue &), take(QLatin1StringView), take(const QString &), take(qint64), 以及 insert。
QCborValue QCborMap::toCborValue() const
显式构建一个代表此映射的 QCborValue 对象。此函数通常不是必要的,因为 QCborValue 对于 QCborMap 有构造函数,所以转换是隐式的。
将 QCborMap 转换为 QCborValue 允许它在所有可以使用 QCborValues 的上下文中使用,包括作为 QCborMap 中的键和映射类型,以及 QCborValue::toCbor。
也请参阅 QCborValue::QCborValue(const QCborMap &).
QJsonObject QCborMap::toJsonObject() const
递归地将此映射中的每个 QCborValue 值转换为 JSON,使用 QCborValue::toJsonValue(),为所有非字符串键创建字符串键,然后返回由这些关联组成的对应 QJsonObject。
请注意,CBOR 的类型集比 JSON 更丰富和广泛,因此在转换中可能会丢失一些信息。有关应用的转换的更多详细信息,请参阅 QCborValue::toJsonValue。
映射键转换为字符串
JSON 对象定义为具有字符串键,与 CBOR 不同,因此将 QCborMap 转换为 QJsonObject 将意味着对键值进行“字符串化”的步骤。转换将使用上述特殊的标签和扩展类型的处理,并将其他类型按照以下方式进行转换
类型 | 转换 |
---|---|
布尔型 | "true" 和 "false" |
空值 | "null" |
未定义 | "undefined" |
整数 | 数字的十进制字符串形式 |
双精度浮点数 | 数字的十进制字符串形式 |
字节数组 | 除非特别标记(见上),否则使用 Base64url 编码 |
数组 | 替换为Diagnostic notation的紧凑格式 |
映射表 | 替换为Diagnostic notation的紧凑格式 |
标签和扩展类型 | 删除标签号并将标签值转换为字符串 |
另请参阅 fromJsonObject(),QCborValue::toJsonValue,QCborArray::toJsonArray,及 toVariantMap。
QVariantHash QCborMap::toVariantHash() const
使用 QCborValue::toVariant() 将CBOR值转换为 QVariant,并将该映射中所有CBOR键“stringify”,返回由此关联列表产生的 QVariantHash。
与CBOR不同,QVariantMaps使用字符串键,因此将 QCborMap 转换为 QVariantMap 时将涉及到键值的“stringify”步骤。有关详细信息,请参阅 QCborMap::toJsonObject。
此外,转换到 QVariant 不完全是无损的。有关更多信息,请参阅 QCborValue::toVariant 中的文档。
另请参阅 fromVariantHash,toVariantMap,toJsonObject,QCborValue::toVariant,及QCborArray::toVariantList。
QVariantMap QCborMap::toVariantMap() const
使用 QCborValue::toVariant 将CBOR值转换为 QVariant,并将该映射中所有CBOR键“stringify”,返回由此关联列表产生的 QVariantMap。
与CBOR不同,QVariantMaps使用字符串键,因此将 QCborMap 转换为 QVariantMap 时将涉及到键值的“stringify”步骤。有关详细信息,请参阅 QCborMap::toJsonObject。
此外,转换到 QVariant 不完全是无损的。有关更多信息,请参阅 QCborValue::toVariant 中的文档。
另请参阅 fromVariantMap,toVariantHash,toJsonObject,QCborValue::toVariant,及QCborArray::toVariantList。
QCborValue QCborMap::value(qint64 key) const
返回此映射中对应于键 key 的 QCborValue 元素(如果存在的话)。CBOR建议使用整数键,因为它们占用较少的空间,且编码和解码更简单。
如果映射中不包含键 key,则此函数返回一个包含未定义值的 QCborValue。因此,使用此函数无法区分键不存在的情况与键映射到未定义值的情况。
如果映射中存在多个等于键 key 的键,则函数返回哪个键是不确定的。尽管 QCborMap 不允许插入重复的键,但仍可以通过用带有它们的CBOR流解码来创建此类映射。通常不允许这样操作,且存在重复键通常表明发送者存在问题。
value(::QLatin1StringView),value(const QString &$),value(const QCborValue &$)
另请参阅 operator[](qint64),find(qint64),constFind(qint64),remove(qint64),以及 contains(qint64)。
QCborValue QCborMap::value(QLatin1StringView key) const
这是一个重载函数。
返回此映射中对应于键 key 的 QCborValue 元素,如果有的话。
如果映射中不包含键 key,则此函数返回一个包含未定义值的 QCborValue。因此,使用此函数无法区分键不存在的情况与键映射到未定义值的情况。
如果映射中存在多个等于 key 的键,则该函数返回哪一个是不确定的。QCborMap 不允许插入重复的键,但可以通过解码带有这些键的 CBOR 流来创建这样的映射。它们通常是不允许的,存在重复键通常表示发送方存在问题。
value(qint64), value(const QString &), value(const QCborValue &)
参见operator[](QLatin1StringView), find(QLatin1StringView), constFind(QLatin1StringView), remove(QLatin1StringView), 和 contains(QLatin1StringView).
QCborValue QCborMap::value(const QString &key) const
这是一个重载函数。
返回此映射中对应于键 key 的 QCborValue 元素,如果有的话。
如果映射中不包含键 key,则此函数返回一个包含未定义值的 QCborValue。因此,使用此函数无法区分键不存在的情况与键映射到未定义值的情况。
如果映射中存在多个等于 key 的键,则该函数返回哪一个是不确定的。QCborMap 不允许插入重复的键,但可以通过解码带有这些键的 CBOR 流来创建这样的映射。它们通常是不允许的,存在重复键通常表示发送方存在问题。
value(qint64), value(QLatin1StringView), value(const QCborValue &)
参见operator[](const QString &), find(const QString &), constFind(const QString &), remove(const QString &), 和 contains(const QString &).
QCborValue QCborMap::value(const QCborValue &key) const
返回此映射中对应于键 key 的 QCborValue 元素,如果有的话。
如果映射中不包含键 key,则此函数返回一个包含未定义值的 QCborValue。因此,使用此函数无法区分键不存在的情况与键映射到未定义值的情况。
如果映射中存在多个等于 key 的键,则该函数返回哪一个是不确定的。QCborMap 不允许插入重复的键,但可以通过解码带有这些键的 CBOR 流来创建这样的映射。它们通常是不允许的,存在重复键通常表示发送方存在问题。
value(qint64), value(QLatin1StringView), value(const QString &)
参见operator[](const QCborValue &), find(const QCborValue &), constFind(const QCborValue &), remove(const QCborValue &), 和 contains(const QCborValue &).
[noexcept]
bool QCborMap::operator!=(const QCborMap &other) const
比较当前映射和other,逐个比较元素,如果两个映射包含任何不同的元素或顺序不同的元素,返回true,否则返回false。
请注意,CBOR映射是无序的,这意味着包含相同键值对但在不同顺序的两个映射仍然会进行比较不同。为了避免这种情况,建议以可预测的顺序将元素插入映射中,例如按升序键值。事实上,为了实现规范CBOR表示,需要地图中的键是有序的。
有关Qt中CBOR等性的更多信息,请参阅,QCborValue::compare。
参见compare,QCborValue::operator==,QCborMap::operator==,operator==和operator!=。
bool QCborMap::operator<(const QCborMap &other) const
比较当前映射和other,逐个比较元素,如果当前映射应该在other之前排序,返回true,否则返回false。
请注意,CBOR映射是无序的,这意味着包含相同键值对但在不同顺序的两个映射仍然会进行比较不同。为了避免这种情况,建议以可预测的顺序将元素插入映射中,例如按升序键值。事实上,为了实现规范CBOR表示,需要地图中的键是有序的。
有关CBOR排序顺序的更多信息,请参阅QCborValue::compare。
参见compare,QCborValue::operator==,QCborMap::operator==,operator==和operator!=。
[noexcept]
QCborMap &QCborMap::operator=(const QCborMap &other)
用其他对象的副本替换此对象的全部内容,然后返回对该对象的引用。
[noexcept]
bool QCborMap::operator==(const QCborMap &其他) const
依次比较此映射和其他,如果在相同的顺序包含相同的元素,则返回true,否则返回false。
请注意,CBOR映射是无序的,这意味着包含相同键值对但在不同顺序的两个映射仍然会进行比较不同。为了避免这种情况,建议以可预测的顺序将元素插入映射中,例如按升序键值。事实上,为了实现规范CBOR表示,需要地图中的键是有序的。
有关Qt中CBOR等性的更多信息,请参阅,QCborValue::compare。
另请参阅compare()、QCborValue::operator==()、QCborMap::operator==()、operator!=()和operator<()。
const QCborValue QCborMap::operator[](qint64 键) const
返回此映射中对应于键 key 的 QCborValue 元素(如果存在的话)。CBOR建议使用整数键,因为它们占用较少的空间,且编码和解码更简单。
如果映射中不包含键 key,则此函数返回一个包含未定义值的 QCborValue。因此,使用此函数无法区分键不存在的情况与键映射到未定义值的情况。
如果映射中存在多个等于 key 的键,则该函数返回哪一个是不确定的。QCborMap 不允许插入重复的键,但可以通过解码带有这些键的 CBOR 流来创建这样的映射。它们通常是不允许的,存在重复键通常表示发送方存在问题。
operator[](QLatin1StringView),operator[](const QString &),operator[](const QCborOperator[] &)
另请参阅value(qint64)、find(qint64)、constFind(qint64)、remove(qint64)和contains(qint64)。
const QCborValue QCborMap::operator[](QLatin1StringView 键) const
这是一个重载函数。
返回此映射中对应于键 key 的 QCborValue 元素,如果有的话。
如果映射中不包含键 key,则此函数返回一个包含未定义值的 QCborValue。因此,使用此函数无法区分键不存在的情况与键映射到未定义值的情况。
如果映射中存在多个等于 key 的键,则该函数返回哪一个是不确定的。QCborMap 不允许插入重复的键,但可以通过解码带有这些键的 CBOR 流来创建这样的映射。它们通常是不允许的,存在重复键通常表示发送方存在问题。
operator[](qint64),operator[](QLatin1StringView),operator[]>(const QCborOperator[] &)
另请参阅value(QLatin1StringView)、find(QLatin1StringView)、constFind(QLatin1StringView)、remove(QLatin1StringView)和contains(QLatin1StringView)。
const QCborValue QCborMap::operator[](const QString &键) const
这是一个重载函数。
返回此映射中对应于键 key 的 QCborValue 元素,如果有的话。
如果映射中不包含键 key,则此函数返回一个包含未定义值的 QCborValue。因此,使用此函数无法区分键不存在的情况与键映射到未定义值的情况。
如果映射中存在多个等于 key 的键,则该函数返回哪一个是不确定的。QCborMap 不允许插入重复的键,但可以通过解码带有这些键的 CBOR 流来创建这样的映射。它们通常是不允许的,存在重复键通常表示发送方存在问题。
operator[](qint64),operator[](QLatin1StringView),operator[]>(const QCborOperator[] &)
另请参阅value(const QString &)、find(const QString &)、constFind(const QString &)、remove(const QString &)和contains(const QString &).
const QCborValue QCborMap::operator[](const QCborValue &键) const
返回此映射中对应于键 key 的 QCborValue 元素,如果有的话。
如果映射中不包含键 key,则此函数返回一个包含未定义值的 QCborValue。因此,使用此函数无法区分键不存在的情况与键映射到未定义值的情况。
如果映射中存在多个等于 key 的键,则该函数返回哪一个是不确定的。QCborMap 不允许插入重复的键,但可以通过解码带有这些键的 CBOR 流来创建这样的映射。它们通常是不允许的,存在重复键通常表示发送方存在问题。
operator[](qint64),operator[](QLatin1StringView),operator[]>(const QCborOperator[] &)
另请参阅value(const QCborValue &)、find(const QCborValue &)、constFind(const QCborValue &)、remove(const QCborValue &)和contains(const QCborValue &).
QCborValueRef QCborMap::operator[](qint64 键)
返回一个指向对应于键键的值的QCborValueRef。CBOR建议使用整数键,因为它们占用的空间更少,并且编码和解码更为简单。
QCborValueRef具有与QCborValue相同的API,但有一个重要区别:如果您向它分配新值,此映射将更新为新值。
如果映射中没有与 key 相等的键,将会插入一个新的键,并且这个函数返回对新值的引用,这个新值将是一个具有未定义值的 QCborValue。因此,使用这个函数无法区分键不存在的情况和键映射到未定义值的情况。
如果映射中包含多个与 key 相等的键,则返回哪个键是未定义的。不允许在 QCborMap 中插入重复的键,但是可以通过使用包含它们的 CBOR 流解码来创建这样的映射。这种情况通常不被允许,且有重复键通常表明发送方存在问题时。
另请参阅 value(qint64), find(qint64), contains(qint64), remove(qint64), operator[](QLatin1StringView), operator[](const QString &), 以及 operator[](const QCborValue &).
QCborValueRef QCborMap::operator[](QLatin1StringView key)
这是一个重载函数。
返回与键 key 对应的此映射中的值的 QCborValueRef。
QCborValueRef具有与QCborValue相同的API,但有一个重要区别:如果您向它分配新值,此映射将更新为新值。
如果映射中没有与 key 相等的键,将会插入一个新的键,并且这个函数返回对新值的引用,这个新值将是一个具有未定义值的 QCborValue。因此,使用这个函数无法区分键不存在的情况和键映射到未定义值的情况。
如果映射中包含多个与 key 相等的键,则返回哪个键是未定义的。不允许在 QCborMap 中插入重复的键,但是可以通过使用包含它们的 CBOR 流解码来创建这样的映射。这种情况通常不被允许,且有重复键通常表明发送方存在问题时。
另请参阅 value(QLatin1StringView), find(QLatin1StringView), contains(QLatin1StringView), remove(QLatin1StringView), operator[](qint64), operator[](const QString &), 以及 operator[](const QCborValue &).
QCborValueRef QCborMap::operator[](const QString &key)
这是一个重载函数。
返回与键 key 对应的此映射中的值的 QCborValueRef。
QCborValueRef具有与QCborValue相同的API,但有一个重要区别:如果您向它分配新值,此映射将更新为新值。
如果映射中没有与 key 相等的键,将会插入一个新的键,并且这个函数返回对新值的引用,这个新值将是一个具有未定义值的 QCborValue。因此,使用这个函数无法区分键不存在的情况和键映射到未定义值的情况。
如果映射中包含多个与 key 相等的键,则返回哪个键是未定义的。不允许在 QCborMap 中插入重复的键,但是可以通过使用包含它们的 CBOR 流解码来创建这样的映射。这种情况通常不被允许,且有重复键通常表明发送方存在问题时。
另请参阅 value(const QString &), find(const QString &), contains(const QString &), remove(const QString &), operator[](qint64), operator[](QLatin1StringView), 以及 operator[](const QCborValue &).
QCborValueRef QCborMap::operator[](const QCborValue &key)
这是一个重载函数。
返回与键 key 对应的此映射中的值的 QCborValueRef。
QCborValueRef具有与QCborValue相同的API,但有一个重要区别:如果您向它分配新值,此映射将更新为新值。
如果映射中没有与 key 相等的键,将会插入一个新的键,并且这个函数返回对新值的引用,这个新值将是一个具有未定义值的 QCborValue。因此,使用这个函数无法区分键不存在的情况和键映射到未定义值的情况。
如果映射中包含多个与 key 相等的键,则返回哪个键是未定义的。不允许在 QCborMap 中插入重复的键,但是可以通过使用包含它们的 CBOR 流解码来创建这样的映射。这种情况通常不被允许,且有重复键通常表明发送方存在问题时。
另请参阅 value(const QCborValue &), find(const QCborValue &), contains(const QCborValue &), remove(const QCborValue &), operator[](qint64), operator[](QLatin1StringView), 以及 operator[](const QString &).
© 2024 Qt 公司。本文件中的文档贡献属于其各自所有者的版权。本文件提供的文档是在《GNU 自由文档许可证》第 1.3 版的条款下发布的,由自由软件基金会出版。Qt 以及相应的商标是芬兰 Qt 公司及其在全球的其他国家的商标。所有其他商标均为其各自所有者的财产。