本页内容

QCborMap Class

QCborMap 类用于存储一个可以用 CBOR 表示的关联容器。更多内容...

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

注意:该类中的所有函数均为可重入函数。

QCborMap 比较

类别可比较类型
strongQCborMap
strongQCborValue 以及 QCborValueConstRef。

公共类型

公共函数

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

静态公共成员

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 工作组专门为 CBOR 设计的新协议均采用整数键。

由于 QCborMap 未进行排序,因此键的搜索时间复杂度为线性(O(n))。实际上,QCborMap 会按元素插入时的顺序保存它们,这意味着可以通过仔细地按排序顺序插入元素来创建已排序的 QCborMap。CBOR 虽不强制要求排序,但建议进行排序。

QCborMap 还可以与QVariantMap 和QJsonObject 之间进行相互转换。但是,在执行转换时,任何非字符串键都会通过一种单向方法被转换为字符串,而这种转换在回转为 QCborMap 时无法逆转。

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

成员类型文档

QCborMap::const_iterator

的同义词是QCborMap::ConstIterator

[since 6.10] QCborMap::const_key_value_iterator

QCborMap::const_key_value_iterator 类型别名(typedef)为QCborMap 提供了 STL 风格的迭代器。

QCborMap::const_key_value_iterator 与QCborMap::const_iterator 本质上相同,但为了与QJsonObject 等其他容器保持一致而提供。

该类型别名于 Qt 6.10 中引入。

另请参阅 QKeyValueIterator 。

QCborMap::iterator

QCborMap::Iterator 的同义词。

QCborMap::key_type

此映射的键类型。由于QCborMap 的键可以是任何CBOR类型,因此此处使用的是QCborValue 。

[since 6.10] QCborMap::key_value_iterator

QCborMap::key_value_iterator 类型别名(typedef)为QCborMap 提供了一个 STL 风格的迭代器。

QCborMap::key_value_iterator 本质上与QCborMap::iterator 相同,但为了与QJsonObject 等其他容器保持一致而提供。

该类型别名于 Qt 6.10 中引入。

另请参阅 QKeyValueIterator 。

QCborMap::mapped_type

映射到的类型(即该值),也就是QCborValue 。

QCborMap::size_type

QCborMap 用于表示尺寸的类型。

QCborMap::value_type

存储在此容器中的值:一对 QCborValues

成员函数文档

[noexcept] QCborMap::QCborMap()

创建一个空的 CBOR Map 对象。

另请参阅 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 的副本。

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

移动构造函数。

被移动的对象other 将被置于默认构造状态。

该函数于 Qt 6.10 中引入。

另请参阅 QCborMap::QCborMap()。

[noexcept] QCborMap::~QCborMap()

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

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

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

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

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

返回一个范围对象,允许以键值对的形式遍历此映射。

请注意,通过此方式获取的值是映射中相应值的引用。具体来说,修改该值将直接修改映射本身。

这些函数在 Qt 6.10 中引入。

另请参阅 QKeyValueIterator 。

QCborMap::iterator QCborMap::begin()

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

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

QCborMap::const_iterator QCborMap::begin() const

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

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

QCborMap::const_iterator QCborMap::cbegin() const

返回一个指向该映射中第一个键值对的映射迭代器。如果该映射为空,则返回的迭代器将与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 映射是无序的,这意味着两个包含完全相同的键值对但顺序不同的映射,其比较结果仍会不同。为避免这种情况,建议以可预测的顺序(例如按键值升序)将元素插入映射。事实上,规范的 CBOR 表示法要求映射中的键按升序排列。

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

另请参阅 QCborValue::compare()、QCborArray::compare(),以及operator==()。

QCborMap::const_iterator QCborMap::constBegin() const

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

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

QCborMap::const_iterator QCborMap::constEnd() const

返回一个表示位于映射中最后一个元素之后的下一个元素的映射迭代器。

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

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 &)。

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

返回一个指向映射中第一个条目的STL 风格常量迭代器。

该函数在 Qt 6.10 中引入。

另请参阅 keyValueBegin()。

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

返回一个指向映射中最后一个条目之后的虚拟条目的常量STL 风格迭代器。

该函数在 Qt 6.10 中引入。

另请参阅 constKeyValueBegin()。

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

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

这是一个重载函数。

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

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

如果该映射中包含由键key 标识的键值对,则返回 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()。

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

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

从映射中提取迭代器it 所指位置处的值,并返回该提取值。

另请参阅 insert()、erase()、take() 和remove()。

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 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 &)。

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 &)。

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

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

由于 CBOR 类型系统是 JSON 类型的超集,因此该转换是无损的。此外,可以通过调用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()。

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

返回一个指向映射中第一个条目的STL 风格迭代器。

该函数在 Qt 6.10 中引入。

另请参阅 keyValueEnd()。

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

返回一个指向映射中第一个条目的常量STL 风格迭代器。

该函数在 Qt 6.10 中引入。

另请参阅 keyValueEnd()。

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

返回一个STL 风格的迭代器,该迭代器指向映射中最后一个条目之后的虚条目。

该函数在 Qt 6.10 中引入。

另请参阅 keyValueBegin()。

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

返回一个指向映射中最后一个条目之后虚构条目的常量STL 风格迭代器。

该函数在 Qt 6.10 中引入。

另请参阅 ` keyValueBegin()`。

QList<QCborValue> QCborMap::keys() const

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

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

void QCborMap::remove(const QCborValue &key)

如果找到键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)

如果找到键key ,则将其及对应的值从映射中移除。如果映射中不存在该键,则此函数不执行任何操作。

如果映射中包含多个与key 相同的键,则该函数将移除哪个键是未定义的。QCborMap 不允许插入重复键,但通过解码包含重复键的 CBOR 流仍可能生成此类映射。通常不允许存在重复键,且出现重复键通常表明发送方存在问题。

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

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

void QCborMap::remove(QLatin1StringView key)

如果找到键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 ,则将其及对应的值从映射中移除。如果映射中不存在该键,则此函数不执行任何操作。

如果映射中包含多个与 `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)

从映射中移除键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)

从映射中移除键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)

从映射中移除键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)

从映射中移除键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 将涉及对键值进行“字符串化”的步骤。该转换将采用上述针对标签和扩展类型的特殊处理方式,并按以下方式转换其余类型:

类型转换
Bool"true" 和 "false"
Null"null"
未定义"undefined"
整数该数的十进制字符串形式
双精度该数的十进制字符串形式
字节数组除非另有标注(见上文),否则以 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

返回此映射中与键key 对应的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

返回此映射中与键key 对应的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

返回此映射中与键key 对应的元素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, since 6.10] QCborMap &QCborMap::operator=(QCborMap &&other)

移动赋值运算符。

被移动的对象other 将处于一种有效但未指定的状态。

该函数在 Qt 6.10 中引入。

[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

返回此映射中与键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 &)。

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)

返回一个 QCborValueRef,该引用指向此映射中与键key 对应的值。

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 QCborValue &key)

返回一个 QCborValueRef,该引用指向此映射中与键key 对应的值。

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 &)。

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

返回一个 QCborValueRef,该引用指向此映射中与键key 对应的值。

QCborValueRef 的 API 与QCborValue 完全相同,但有一个重要区别:若为其赋予新值,该映射将更新为该新值。

如果该映射中不存在与 `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

返回此映射中与键key 对应的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

返回此映射中与键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 &)。

相关的非成员

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

比较lhs 和rhs 映射,依次比较每个元素,如果两个映射中包含任何不同的元素或元素顺序不同,则返回true;否则返回false。

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

有关 Qt 中 CBOR 相等性的更多信息,请参阅QCborValue::compare()。

另请参阅 compare()、QCborValue::operator==()、operator==(),以及operator<()。

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

比较lhs 和rhs 这两个映射,按顺序逐个元素进行比较,如果lhs 中的映射应在rhs 之前进行排序,则返回true,否则返回false。

请注意,CBOR 映射是无序的,这意味着两个包含完全相同键值对但顺序不同的映射在比较时仍会产生不同结果。为避免此情况,建议按可预测的顺序(例如按键值升序)将元素插入映射。事实上,规范的 CBOR 表示法要求键值对按升序排列。

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

另请参阅 compare()、QCborValue::operator==()、QCborMap::operator==()、operator==() 以及operator!=()。

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

比较lhs 和rhs 两个映射,按顺序逐个比较每个元素,如果lhs 的映射应在rhs 之前进行排序,或者两个映射包含相同的元素且顺序相同,则返回true;否则返回false。

请注意,CBOR 映射是无序的,这意味着两个包含完全相同键值对但顺序不同的映射在比较时仍会产生不同结果。为避免此情况,建议按可预测的顺序(例如按键值升序)将元素插入映射。事实上,规范的 CBOR 表示法要求键值按升序排列。

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

另请参阅 compare()、QCborValue::operator==()、QCborMap::operator==()、operator==() 以及operator!=()。

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

比较lhs 和rhs 映射,按顺序逐个元素进行比较,如果两个映射包含相同的元素且顺序相同,则返回true;否则返回false。

请注意,CBOR 映射是无序的,这意味着两个包含完全相同键值对但顺序不同的映射,在比较时仍会得到不同的结果。为避免这种情况,建议以可预测的顺序(例如按键值升序)将元素插入映射中。事实上,规范的 CBOR 表示法要求键按升序排列。

有关 Qt 中 CBOR 相等性的更多信息,请参阅QCborValue::compare()。

另请参阅 compare()、QCborValue::operator==()、operator!=() 以及operator<()。

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

比较lhs 和rhs 这两个映射,依次比较每个元素,如果lhs 中的映射在rhs 之后应被视为已排序,则返回true;否则返回false。

请注意,CBOR 映射是无序的,这意味着两个包含完全相同的键值对但顺序不同的映射,在比较时仍会得到不同的结果。为避免这种情况,建议以可预测的顺序(例如按键值升序)将元素插入映射中。实际上,规范的 CBOR 表示法要求映射中的键必须按升序排列。

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

另请参阅 compare()、QCborValue::operator==()、QCborMap::operator==()、operator==() 以及operator!=()。

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

比较lhs 和rhs 这两个映射,按顺序逐个元素进行比较,如果lhs 中的映射在rhs 之后应被视为已排序,或者两个映射包含相同元素且顺序一致,则返回true;否则返回false。

请注意,CBOR 映射是无序的,这意味着两个包含完全相同的键值对但顺序不同的映射,其比较结果仍会不同。为避免这种情况,建议以可预测的顺序(例如按键值升序)将元素插入映射。事实上,规范的 CBOR 表示形式要求映射中的键必须按升序排列。

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

另请参阅 compare()、QCborValue::operator==()、QCborMap::operator==()、operator==() 以及operator!=()。

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