QCborMap Class

QCborMap 类用于保存可用 CBOR 表示的关联容器。更多

头文件: #include <QCborMap>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

该类具有很强的可比性

该类与QCborValue 和 QCborValueConstRef 具有很强的可比性

注意:该类中的所有函数都是可重入的

公共类型

公共函数

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 QCborValue &key) const
QCborMap::const_iterator constFind(const QString &key) 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
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
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

静态公共成员

QCborMap fromJsonObject(const QJsonObject &obj)
(since 6.3) QCborMap fromJsonObject(QJsonObject &&obj)
QCborMap fromVariantHash(const QVariantHash &hash)
QCborMap fromVariantMap(const QVariantMap &map)
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)

详细说明

该类可用于保存 CBOR 中的关联容器,即键与值类型之间的映射。CBOR 是简明二进制对象表示法(Concise Binary Object Representation),是一种非常紧凑的二进制数据编码形式,是 JSON 的超集。它是由 IETF 受限 RESTful 环境(CoRE)工作组创建的,该工作组已将其用于许多新的 RFC 中。它旨在与CoAP 协议一起使用。

与 JSON 和QVariantMap 不同,CBOR 映射键可以是任何类型,而不仅仅是字符串。因此,QCborMap 实际上是QCborValue 键与QCborValue 值元素之间的映射。

不过,对于所有需要键参数的成员函数,QCborMap 都提供了重载,可以有效地处理整数和字符串。事实上,我们鼓励使用整数键,因为它们传输时占用的字节数更少,编码和解码也更简单。由 IETF CoRE WG 设计的专门用于 CBOR 的较新协议都使用了整数键。

QCborMap 没有排序,因此搜索键的复杂度为线性(O(n))。QCborMap 实际上是按元素插入的顺序排列的,这就意味着可以通过按排序顺序仔细插入元素来制作排序的 QCborMaps。CBOR 并不要求排序,但建议这样做。

QCborMap 也可以转换为QVariantMapQJsonObject 。不过,在进行转换时,任何非字符串键都将使用单向方法进行字符串化,而转换回 QCborMap 将不会撤销。

另请参阅 QCborArray,QCborValue,QJsonDocument,QVariantMap,解析和显示 CBOR 数据序列化转换器以及保存和加载游戏

成员类型文档

QCborMap::const_iterator

的同义词QCborMap::ConstIterator

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

如果 map 中包含键值为key 的键值对,则返回指向该键值对的 map 迭代器。如果不包含,则返回end() 。

CBOR 建议使用整数键,因为它们占用的空间更少,编码和解码也更简单。

key QCborMap 不允许插入重复的键,但可以通过解码 CBOR 流来创建这样的映射。通常不允许插入重复的密钥,而且有重复的密钥通常表明发送方有问题。

另请参阅 value(qint64)、operator[](qint64)、constFind(qint64)、remove(qint64)、contains(qint64)、value(QLatin1StringView) 、value(const QString &) 和value(const QCborValue &)。

这是一个重载函数。

如果 map 包含键值对,则返回指向键值为key 的键值对的 map 迭代器。如果不包含,则返回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

这是一个重载函数。

如果 map 包含键值对,则返回指向键值为key 的键值对的 map 迭代器。如果不包含,则返回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

这是一个重载函数。

如果 map 包含键值对,则返回指向键值为key 的键值对的 map 迭代器。如果不包含,则返回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)

创建一个 QCborMap 对象,它是other 的副本。

[noexcept] QCborMap::~QCborMap()

销毁QCborMap 对象,并释放其拥有的所有相关资源。

QCborMap::iterator QCborMap::begin()

返回指向此映射的第一个键值对的映射迭代器。如果此 map 为空,返回的迭代器将与end() 相同。

另请参阅 constBegin() 和end()。

QCborMap::const_iterator QCborMap::begin() const

返回指向此映射的第一个键值对的映射迭代器。如果此 map 为空,返回的迭代器将与constEnd() 相同。

另请参阅 begin() 和constEnd()。

QCborMap::const_iterator QCborMap::cbegin() const

返回指向此映射的第一个键值对的映射迭代器。如果此 map 为空,返回的迭代器将与constEnd() 相同。

另请参阅 begin() 和constEnd()。

QCborMap::const_iterator QCborMap::cend() const

返回一个映射迭代器,代表映射中最后一个元素之后的元素。

另请参阅 begin()、constBegin()、find() 和constFind() 。

void QCborMap::clear()

清空该地图。

另请参见 isEmpty()。

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

比较此映射和other ,依次比较每个元素,并返回一个整数,表示应在other 之前(如果结果为负)还是之后(如果结果为正)对此映射进行排序。如果该函数返回 0,则两个映射相等,包含相同的元素。

需要注意的是,CBOR 映射是无序的,这意味着包含相同元素对但顺序不同的两个映射的比较结果仍会不同。为了避免这种情况,建议按可预测的顺序(如按键值升序)将元素插入映射。事实上,Canonical CBOR 表示法需要键值排序的映射。

有关 CBOR 排序顺序的更多信息,请参见QCborValue::compare() 。

另请参见 QCborValue::compare()、QCborArray::compare() 和operator==()。

QCborMap::const_iterator QCborMap::constBegin() const

返回指向此映射的第一个键值对的映射迭代器。如果此 map 为空,返回的迭代器将与constEnd() 相同。

另请参阅 begin() 和constEnd()。

QCborMap::const_iterator QCborMap::constEnd() const

返回一个映射迭代器,代表映射中最后一个元素之后的元素。

另请参阅 begin()、constBegin()、find() 和constFind() 。

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

如果 map 中包含键值为key 的键值对,则返回指向该键值对的 map 迭代器。如果不包含,则返回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

这是一个重载函数。

如果 map 包含键值对,则返回指向键值为key 的键值对的 map 迭代器。如果不包含,则返回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 QCborValue &key) const

这是一个重载函数。

如果 map 包含键值对,则返回指向键值为key 的键值对的 map 迭代器。如果不包含,则返回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 &)。

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

这是一个重载函数。

如果 map 包含键值对,则返回指向键值为key 的键值对的 map 迭代器。如果不包含,则返回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 &)。

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

如果该映射包含键key 标识的键值对,则返回 true。

另请参阅 value(const QCborValue &)、operator[](const QCborValue &)、find(const QCborValue &)、remove(const QCborValue &)、contains(qint64)、remove(QLatin1StringView) 和remove(const QString &)。

bool QCborMap::contains(qint64 key) const

如果该映射包含由键key 标识的键值对,则返回 true。CBOR 建议使用整数键,因为它们占用的空间更少,编码和解码也更简单。

另请参阅 value(qint64)、operator[](qint64)、find(qint64)、remove(qint64)、contains(QLatin1StringView) 、remove(const QString &) 和remove(const QCborValue &)。

bool QCborMap::contains(QLatin1StringView key) const

这是一个重载函数。

如果此 map 包含由 keykey 标识的键值对,则返回 true。

另请参阅 value(QLatin1StringView),operator[](QLatin1StringView),find(QLatin1StringView),remove(QLatin1StringView),contains(qint64),remove(const QString &), 和remove(const QCborValue &)。

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

这是一个重载函数。

如果此 map 包含由 keykey 标识的键值对,则返回 true。

另请参阅 value(const QString &)、operator[](const QString &)、find(const QString &)、remove(const QString &)、contains(qint64)、remove(QLatin1StringView) 和remove(const QCborValue &)。

bool QCborMap::empty() const

isEmpty() 的同义词。提供该函数是为了与使用标准库 API 的通用代码兼容。

如果该映射为空,则返回 true (size() == 0)。

另请参阅 isEmpty() 和size()。

QCborMap::iterator QCborMap::end()

返回一个映射迭代器,代表映射中最后一个元素之后的元素。

另请参阅 begin()、constBegin()、find() 和constFind() 。

QCborMap::const_iterator QCborMap::end() const

返回一个映射迭代器,代表映射中最后一个元素之后的元素。

另请参阅 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()。

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

使用 QCborValue::fromJson() 将obj 对象中的所有 JSON 项目转换为 CBOR,并返回由这些元素组成的映射。

这种转换是无损的,因为 CBOR 类型系统是 JSON 的超集。此外,该函数返回的 map 可以通过toJsonObject() 转换回原始的obj

另请参见 toJsonObject()、toVariantMap()、QCborValue::fromJsonValue() 和QCborArray::fromJsonArray()。

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

这是一个重载函数。

该函数在 Qt 6.3 中引入。

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

使用QCborValue::fromVariant() 将hash 中的所有项目转换为 CBOR,并返回由这些元素组成的映射。

QVariant 转换不是完全无损的。更多信息请参阅QCborValue::fromVariant() 中的文档。

另请参阅 toVariantHash()、fromVariantMap()、fromJsonObject() 和QCborValue::fromVariant()。

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

使用QCborValue::fromVariant() 将map 中的所有项目转换为 CBOR,并返回由这些元素组成的映射。

QVariant 转换不是完全无损的。更多信息请参阅QCborValue::fromVariant() 中的文档。

另请参见 toVariantMap()、fromVariantHash()、fromJsonObject() 和QCborValue::fromVariant()。

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

这是一个重载函数。

v 中的键值对插入该映射,并返回指向新插入键值对的映射迭代器。

如果该映射中已有一个键等于v.first ,其值将被v.second 覆盖。

另请参见 operator[],erase() 和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 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(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(qint64 key, const QCborValue &value)

这是一个重载函数。

将键key 和值value 插入该映射,并返回一个指向新插入的键对的映射迭代器。

如果该映射的键值已等于key ,则其值将被value 覆盖。

另请参见 erase(),remove(qint64),value(qint64),operator[](qint64),find(qint64),contains(qint64),take(qint64), 和extract().

bool QCborMap::isEmpty() const

如果该映射为空(即size() 为 0),则返回 true。

另请参阅 size() 和clear()。

QList<QCborValue> QCborMap::keys() const

返回此映射中所有键的列表。

另请参阅 QMap::keys() 和QHash::keys()。

void QCborMap::remove(const QCborValue &key)

如果在 map 中找到键key 和相应的值,则将其删除。如果映射表中没有该键,则该函数不会执行任何操作。

key QCborMap 不允许插入重复的键,但可以通过解码 CBOR 流来创建这样的映射。通常不允许插入重复的密钥,而且有重复的密钥通常表明发送方有问题。

remove(qint64), remove(QLatin1StringView), remove(constQString &)

另请参阅 value(const QCborValue &)、operator[](const QCborValue &)、find(const QCborValue &) 和contains(const QCborValue &)。

void QCborMap::remove(qint64 key)

如果在 map 中找到键key 和相应的值,则将其删除。如果映射表中没有这样的键,则该函数不会执行任何操作。

key QCborMap 不允许插入重复的键,但可以通过解码 CBOR 流来创建这样的映射。通常不允许插入重复的密钥,有重复的密钥通常表明发送方有问题。

remove(QLatin1StringView), remove(constQString &), remove(constQCborValue &)

另请参阅 value(qint64)、operator[](qint64)、find(qint64) 和contains(qint64)。

void QCborMap::remove(QLatin1StringView key)

这是一个重载函数。

如果找到键key 和相应的值,则将其从 map 中删除。如果 map 中不包含该键,则该函数不会执行任何操作。

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 和相应的值,则将其从 map 中移除。如果 map 中不包含该键,则该函数不会执行任何操作。

key QCborMap 不允许插入重复的键,但可以通过解码 CBOR 流来创建这样的映射。通常不允许插入重复的密钥,而且有重复的密钥通常表明发送方有问题。

remove(qint64), remove(QLatin1StringView), remove(constQCborValue &)

另请参阅 value(const QString &)、operator[](const QString &)、find(const QString &) 和contains(const QString &)。

[noexcept] qsizetype QCborMap::size() const

返回此映射中元素的个数。

另请参阅 isEmpty()。

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

将该地图与other 互换。该操作速度非常快,从未出现过故障。

QCborValue QCborMap::take(QLatin1StringView key)

从 map 中移除键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 QCborValue &key)

从 map 中移除键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::take(const QString &key)

从 map 中移除键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(qint64 key)

从 map 中移除键key 和相应的值,如果找到该值,则返回该值。如果映射表中没有该键,则该函数不会执行任何操作。

key QCborMap 不允许插入重复的键,但可以通过解码 CBOR 流来创建这样的映射。通常不允许插入重复的密钥,而且有重复的密钥通常表明发送方有问题。

另请参阅 value(qint64),operator[](qint64),find(qint64),contains(qint64),take(QLatin1StringView),take(const QString &),take(const QCborValue &) 和insert().

QCborValue QCborMap::toCborValue() const

显式构造表示该地图的QCborValue 对象。通常不需要这个函数,因为QCborValue 有一个用于QCborMap 的构造函数,所以转换是隐式的。

QCborMap 转换为QCborValue 可以在任何可以使用 QCborValues 的上下文中使用,包括作为QCborMap 中的键和映射类型,以及QCborValue::toCbor() 中的键和映射类型。

另请参阅 QCborValue::QCborValue(const QCborMap &)。

QJsonObject QCborMap::toJsonObject() const

使用QCborValue::toJsonValue() 将此映射中的每个QCborValue 值递归转换为 JSON,并为所有非字符串键创建字符串键,然后返回由这些关联组成的相应QJsonObject

请注意,CBOR 包含的类型集比 JSON 更丰富、更广泛,因此在转换过程中可能会丢失一些信息。有关应用哪些转换的详细信息,请参阅QCborValue::toJsonValue()。

将地图键转换为字符串

与 CBOR 不同,JSON 对象被定义为具有字符串键,因此将QCborMap 转换为QJsonObject 将意味着键值的 "字符串化 "步骤。转换将使用上述标记和扩展类型的特殊处理方法,并将对其他类型进行如下转换:

类型转换
布尔真 "和 "假
"空"
未定义"未定义"
整数数字的十进制字符串形式
二进制数字的十进制字符串形式
字节数组除非有不同标记(见上文),否则编码为 Base64url
数组由其紧凑形式的Diagnostic notation
地图替换为其紧凑形式Diagnostic notation
标签和扩展类型去掉标记号,标记值转换为字符串

另请参阅 fromJsonObject()、QCborValue::toJsonValue()、QCborArray::toJsonArray() 和toVariantMap() 。

QVariantHash QCborMap::toVariantHash() const

使用QCborValue::toVariant() 将 CBOR 值转换为QVariant ,并对该映射中的所有 CBOR 键进行 "字符串化",返回关联列表中的QVariantHash

与 CBOR 不同,QVariantMaps 的键值是字符串,因此将QCborMap 转换为QVariantMap 意味着键值的 "字符串化 "步骤。详见QCborMap::toJsonObject() 。

此外,向QVariant 的转换并非完全无损。更多信息请参见QCborValue::toVariant() 中的文档。

另请参见 fromVariantHash()、toVariantMap()、toJsonObject()、QCborValue::toVariant() 和QCborArray::toVariantList()。

QVariantMap QCborMap::toVariantMap() const

使用QCborValue::toVariant() 将 CBOR 值转换为QVariant ,并对该映射中的所有 CBOR 键进行 "字符串化",返回关联列表中的QVariantMap

与 CBOR 不同,QVariantMaps 的键值是字符串,因此将QCborMap 转换为QVariantMap 意味着键值的 "字符串化 "步骤。详见QCborMap::toJsonObject() 。

此外,向QVariant 的转换并非完全无损。更多信息请参见QCborValue::toVariant() 中的文档。

另请参见 fromVariantMap()、toVariantHash()、toJsonObject()、QCborValue::toVariant() 和QCborArray::toVariantList()。

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

如果存在 keykey ,则返回该映射中与之对应的QCborValue 元素。

如果该映射表不包含键key ,该函数将返回一个包含未定义值的QCborValue 。因此,该函数无法区分键不存在的情况和键映射到未定义值的情况。

key QCborMap 不允许插入重复的键,但可以通过解码 CBOR 流来创建这样的映射。通常不允许插入重复的键,有重复的键通常表明发送方有问题。

value(qint64), value(QLatin1StringView), value(constQString &)

另请参阅 operator[](const QCborValue &)、find(const QCborValue &)、constFind(const QCborValue &)、remove(const QCborValue &) 和contains(const QCborValue &)。

QCborValue QCborMap::value(qint64 key) const

返回本映射中与关键字key 对应的QCborValue 元素(如果有的话)。CBOR 建议使用整数键,因为它们占用的空间更少,编码和解码也更简单。

如果映射不包含键key ,该函数将返回一个包含未定义值的QCborValue 。因此,该函数无法区分键不存在的情况和键被映射到未定义值的情况。

key QCborMap 不允许插入重复的键,但可以通过解码 CBOR 流来创建这样的映射。通常不允许插入重复的键,而且有重复的键通常表明发送方有问题。

value(QLatin1StringView), value(constQString &), value(constQCborValue &)

另请参阅 operator[](qint64)、find(qint64)、constFind(qint64)、remove(qint64) 和contains(qint64)。

QCborValue QCborMap::value(QLatin1StringView key) const

这是一个重载函数。

如果存在 keykey ,则返回该映射中与之对应的QCborValue 元素。

如果映射不包含键key ,则该函数返回一个包含未定义值的QCborValue 。因此,该函数无法区分键不存在的情况和键映射到未定义值的情况。

key QCborMap 不允许插入重复的键,但可以通过解码 CBOR 流来创建这样的映射。通常不允许插入重复的键,有重复的键通常表明发送方有问题。

value(qint64), value(constQString &), value(constQCborValue &)

另请参阅 operator[](QLatin1StringView),find(QLatin1StringView),constFind(QLatin1StringView),remove(QLatin1StringView) 和contains(QLatin1StringView)。

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

这是一个重载函数。

如果存在 keykey ,则返回该映射中与之对应的QCborValue 元素。

如果映射不包含键key ,则该函数返回一个包含未定义值的QCborValue 。因此,该函数无法区分键不存在的情况和键映射到未定义值的情况。

key QCborMap 不允许插入重复的键,但可以通过解码 CBOR 流来创建这样的映射。通常不允许插入重复的键,有重复的键通常表明发送方有问题。

value(qint64), value(QLatin1StringView), value(constQCborValue &)

另请参阅 operator[](const QString &)、find(const QString &)、constFind(const QString &)、remove(const QString &) 和contains(const QString &)。

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

other 的副本替换此对象的内容,然后返回此对象的引用。

QCborValueRef QCborMap::operator[](qint64 key)

返回一个 QCborValueRef,指向本映射中与键key 对应的值。CBOR 建议使用整数键,因为它们占用的空间更少,编码和解码也更简单。

QCborValueRef 的 API 与QCborValue 完全相同,但有一个重要区别:如果为其分配新值,该映射将根据新值进行更新。

如果该映射中没有等于key 的键,则会插入一个键,该函数将返回对新值的引用,而新值将是一个带有未定义值的QCborValue 。因此,该函数无法区分键不存在的情况和键被映射到未定义值的情况。

key QCborMap 不允许插入重复的键,但可以通过解码 CBOR 流来创建这样的映射。通常不允许插入重复的键,有重复的键通常表明发送方有问题。

另请参阅 value(qint64)、find(qint64)、contains(qint64)、remove(qint64)、operator[](QLatin1StringView)、operator[](const QString &) 和operator[](const QCborValue &)。

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

如果存在 keykey ,则返回该映射中与之对应的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 &)。

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

返回本映射中与关键字key 对应的QCborValue 元素(如果有的话)。CBOR 建议使用整数键,因为它们占用的空间更少,编码和解码也更简单。

如果映射不包含键key ,该函数将返回一个包含未定义值的QCborValue 。因此,该函数无法区分键不存在的情况和键被映射到未定义值的情况。

key QCborMap 不允许插入重复的键,但可以通过解码 CBOR 流来创建这样的映射。通常不允许插入重复的密钥,而且有重复的密钥通常表明发送方有问题。

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

另请参阅 value(qint64)、find(qint64)、constFind(qint64)、remove(qint64)和contains(qint64)。

QCborValueRef QCborMap::operator[](QLatin1StringView key)

这是一个重载函数。

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

QCborValueRef 的 API 与QCborValue 完全相同,但有一个重要区别:如果为其分配新值,此映射将根据新值进行更新。

如果该映射没有等于key 的 key,则会插入一个 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 QCborValue &key)

这是一个重载函数。

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

QCborValueRef 的 API 与QCborValue 完全相同,但有一个重要区别:如果为其分配新值,此映射将根据新值进行更新。

如果该映射没有等于key 的 key,则会插入一个 key,该函数会返回一个指向新值的引用,该引用将是一个带有未定义值的QCborValue 。因此,该函数无法区分键不存在的情况和键被映射到未定义值的情况。

key QCborMap 不允许插入重复的键,但可以通过解码 CBOR 流来创建这样的映射。通常不允许插入重复的密钥,而且有重复的密钥通常表明发送方有问题。

另请参阅 value(const QCborValue &)、find(const QCborValue &)、contains(const QCborValue &)、remove(const QCborValue &)、operator[](qint64)、operator[](QLatin1StringView) 和operator[](const QString &)。

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

这是一个重载函数。

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

QCborValueRef 的 API 与QCborValue 完全相同,但有一个重要区别:如果为其分配新值,此映射将根据新值进行更新。

如果该映射没有等于key 的 key,则会插入一个 key,该函数会返回一个指向新值的引用,该引用将是一个带有未定义值的QCborValue 。因此,该函数无法区分键不存在的情况和键被映射到未定义值的情况。

key QCborMap 不允许插入重复的键,但可以通过解码 CBOR 流来创建这样的映射。通常不允许插入重复的键,有重复的键通常表明发送方有问题。

另请参阅 value(const QString &)、find(const QString &)、contains(const QString &)、remove(const QString &)、operator[](qint64)、operator[](QLatin1StringView) 和operator[](const QCborValue &)。

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

这是一个重载函数。

如果存在 keykey ,则返回该映射中与之对应的QCborValue 元素。

如果映射不包含键key ,则该函数返回一个包含未定义值的QCborValue 。因此,该函数无法区分键不存在的情况和键映射到未定义值的情况。

key QCborMap 不允许插入重复的键,但可以通过解码 CBOR 流来创建这样的映射。通常情况下不允许插入重复的键,有重复的键通常表明发送方有问题。

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

另请参阅 value(QLatin1StringView),find(QLatin1StringView),constFind(QLatin1StringView),remove(QLatin1StringView), 和contains(QLatin1StringView)。

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

这是一个重载函数。

如果存在 keykey ,则返回该映射中与之对应的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 &)。

相关非会员

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

比较lhsrhs 地图,依次比较每个元素,如果两个地图包含任何不同元素或元素顺序不同,则返回 true,否则返回 false。

请注意,CBOR 地图是无序的,这意味着包含相同元素对但顺序不同的两个地图的比较结果仍然不同。为避免这种情况,建议按可预测的顺序(如按键值升序)将元素插入映射。事实上,Canonical CBOR 表示法需要键值按排序顺序排列的映射。

有关 Qt 中 CBOR 平等性的更多信息,请参见QCborValue::compare().

另请参见 compare()、QCborValue::operator==()、QCborMap::operator==()、operator==() 和operator<()。

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

比较lhsrhs 地图,按顺序比较每个元素,如果lhs 地图应排序在rhs 之前,则返回 true,否则返回 false。

请注意,CBOR 地图是无序的,这意味着两个包含相同元素对但顺序不同的地图的比较结果仍会不同。为避免这种情况,建议按可预测的顺序(如按键值升序)将元素插入映射。事实上,Canonical CBOR 表示法需要键值排序的映射。

有关 CBOR 排序顺序的更多信息,请参见QCborValue::compare() 。

另请参见 compare()、QCborValue::operator==()、QCborMap::operator==()、operator==() 和operator!=()。

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

比较lhsrhs 地图,按顺序比较每个元素,如果lhs 地图应排序在rhs 之前,或两个地图包含的元素顺序相同,则返回 true,否则返回 false。

请注意,CBOR 地图是无序的,这意味着包含相同元素对但顺序不同的两个地图的比较结果仍会不同。为避免这种情况,建议按可预测的顺序(如按键值升序)将元素插入映射。事实上,Canonical CBOR 表示法需要键值排序的映射。

有关 CBOR 排序顺序的更多信息,请参见QCborValue::compare() 。

另请参见 compare()、QCborValue::operator==()、QCborMap::operator==()、operator==() 和operator!=()。

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

比较lhsrhs 地图,依次比较每个元素,如果两个地图包含的元素顺序相同,则返回 true,否则返回 false。

请注意,CBOR 地图是无序的,这意味着包含相同元素对但顺序不同的两个地图的比较结果仍会不同。为避免这种情况,建议按可预测的顺序(如按键值升序)将元素插入映射。事实上,Canonical CBOR 表示法需要键值按排序顺序排列的映射。

有关 Qt 中 CBOR 平等性的更多信息,请参见QCborValue::compare().

另请参见 compare()、QCborValue::operator==()、QCborMap::operator===()、operator!=() 和operator<()。

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

比较lhsrhs 地图,按顺序比较每个元素,如果lhs 地图应排序在rhs 之后,则返回 true,否则返回 false。

请注意,CBOR 地图是无序的,这意味着两个包含相同元素对但顺序不同的地图的比较结果仍会不同。为避免这种情况,建议按可预测的顺序(如按键值升序)将元素插入映射。事实上,Canonical CBOR 表示法需要键值排序的映射。

有关 CBOR 排序顺序的更多信息,请参见QCborValue::compare() 。

另请参见 compare()、QCborValue::operator==()、QCborMap::operator==()、operator==() 和operator!=()。

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

比较lhsrhs 地图,按顺序比较每个元素,如果lhs 地图应排序在rhs 之后,或两个地图包含的元素顺序相同,则返回 true,否则返回 false。

请注意,CBOR 地图是无序的,这意味着包含相同元素对但顺序不同的两个地图的比较结果仍会不同。为避免这种情况,建议按可预测的顺序(如按键值升序)将元素插入映射。事实上,Canonical CBOR 表示法需要键值排序的映射。

有关 CBOR 排序顺序的更多信息,请参见QCborValue::compare() 。

另请参见 compare()、QCborValue::operator==()、QCborMap::operator==()、operator==() 和operator!=()。

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