- Qt 6.9
- Qt Core
- C++ Classes
- QCborArray
- Qt 6.9.2 Reference Documentation

# QCborArray Class

The QCborArray class is used to hold an array of CBOR elements. More...

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

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

This class is strongly comparable.

This class is strongly comparable with QCborValueConstRef.

Note: All functions in this class are reentrant.

## Public Types

class | ConstIterator
class | Iterator
| const_iterator
| const_pointer
| const_reference
| difference_type
| iterator
| pointer
| reference
| size_type
| value_type

## Public Functions

| QCborArray()
| QCborArray(std::initializer_list<QCborValue> args)
| QCborArray(const QCborArray &other)
| ~QCborArray()
void | append(QCborValue &&value)
void | append(const QCborValue &value)
QCborValue | at(qsizetype i) const
QCborArray::iterator | begin()
QCborArray::const_iterator | begin() const
QCborArray::const_iterator | cbegin() const
QCborArray::const_iterator | cend() const
void | clear()
int | compare(const QCborArray &other) const
QCborArray::const_iterator | constBegin() const
QCborArray::const_iterator | constEnd() const
bool | contains(const QCborValue &value) const
bool | empty() const
QCborArray::iterator | end()
QCborArray::const_iterator | end() const
QCborArray::iterator | erase(QCborArray::const_iterator it)
QCborArray::iterator | erase(QCborArray::iterator it)
QCborValue | extract(QCborArray::ConstIterator it)
QCborValue | extract(QCborArray::Iterator it)
QCborValueRef | first()
QCborValue | first() const
void | insert(qsizetype i, QCborValue &&value)
void | insert(qsizetype i, const QCborValue &value)
QCborArray::iterator | insert(QCborArray::const_iterator before, const QCborValue &value)
QCborArray::iterator | insert(QCborArray::iterator before, const QCborValue &value)
bool | isEmpty() const
QCborValueRef | last()
QCborValue | last() const
void | pop_back()
void | pop_front()
void | prepend(QCborValue &&value)
void | prepend(const QCborValue &value)
void | push_back(const QCborValue &t)
void | push_front(const QCborValue &t)
void | removeAt(qsizetype i)
void | removeFirst()
void | removeLast()
qsizetype | size() const
void | swap(QCborArray &other)
QCborValue | takeAt(qsizetype i)
QCborValue | takeFirst()
QCborValue | takeLast()
QCborValue | toCborValue() const
QJsonArray | toJsonArray() const
QVariantList | toVariantList() const
QCborArray | operator+(const QCborValue &v) const
QCborArray & | operator+=(const QCborValue &v)
QCborArray & | operator<<(const QCborValue &v)
QCborArray & | operator=(const QCborArray &other)
QCborValueRef | operator[](qsizetype i)
const QCborValue | operator[](qsizetype i) const

## Static Public Members

QCborArray | fromJsonArray(const QJsonArray &array)
`(since 6.3)` QCborArray | fromJsonArray(QJsonArray &&array)
QCborArray | fromStringList(const QStringList &list)
QCborArray | fromVariantList(const QVariantList &list)

## Related Non-Members

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

## Detailed Description

This class can be used to hold one sequential container in CBOR (an array). 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.

QCborArray is very similar to QVariantList and QJsonArray and its API is almost identical to those two classes. It can also be converted to and from those two, though there may be loss of information in some conversions.

See also QCborValue, QCborMap, QJsonArray, QList, Parsing and displaying CBOR data, Serialization Converter, and Saving and Loading a Game.

## Member Type Documentation

### QCborArray::const_iterator

A synonym to QCborArray::ConstIterator.

### QCborArray::const_pointer

A typedef to `const QCborValue *`, for compatibility with generic algorithms.

### QCborArray::const_reference

A typedef to `const QCborValue &`, for compatibility with generic algorithms.

### QCborArray::difference_type

A typedef to qsizetype.

### QCborArray::iterator

A synonym to QCborArray::Iterator.

### QCborArray::pointer

A typedef to `QCborValue *`, for compatibility with generic algorithms.

### QCborArray::reference

A typedef to `QCborValue &`, for compatibility with generic algorithms.

### QCborArray::size_type

A typedef to qsizetype.

### QCborArray::value_type

The type of values that can be held in a QCborArray: that is, QCborValue.

## Member Function Documentation

### void QCborArray::insert(qsizetype i, QCborValue &&value)

### void QCborArray::insert(qsizetype i, const QCborValue &value)

Inserts value into the array at position i in this array. If i is -1, the entry is appended to the array. Pads the array with invalid entries if i is greater than the prior size of the array.

See also at(), operator[](), first(), last(), prepend(), append(), removeAt(), takeAt(), and extract().

### QCborValue QCborArray::extract(QCborArray::ConstIterator it)

### QCborValue QCborArray::extract(QCborArray::Iterator it)

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

See also insert(), erase(), takeAt(), and removeAt().

### void QCborArray::prepend(QCborValue &&value)

### void QCborArray::prepend(const QCborValue &value)

Prepends value into the array before any other elements it may already contain.

See also at(), operator[](), first(), last(), insert(), append(), removeAt(), and takeAt().

### void QCborArray::append(QCborValue &&value)

### void QCborArray::append(const QCborValue &value)

Appends value into the array after all other elements it may already contain.

See also at(), operator[](), first(), last(), insert(), prepend(), removeAt(), and takeAt().

### QCborArray::iterator QCborArray::insert(QCborArray::const_iterator before, const QCborValue &value)

### QCborArray::iterator QCborArray::insert(QCborArray::iterator before, const QCborValue &value)

Inserts value into this array before element before and returns an array iterator pointing to the just-inserted element.

See also erase(), removeAt(), prepend(), and append().

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

### QCborArray::iterator QCborArray::erase(QCborArray::iterator it)

Removes the element pointed to by the array iterator it from this array, then returns an iterator to the next element (the one that took the same position in the array that it used to occupy).

See also insert(), removeAt(), takeAt(), takeFirst(), and takeLast().

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

Constructs an empty QCborArray.

### QCborArray::QCborArray(std::initializer_list<QCborValue> args)

Initializes this QCborArray from the C++ brace-enclosed list found in args, as in the following example:

     QCborArray a = { null, 0, 1, 1.5, 2, "Hello", QByteArray("World") };

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

Copies the contents of other into this object.

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

Destroys this QCborArray and frees any associated resources.

### QCborValue QCborArray::at(qsizetype i) const

Returns the QCborValue element at position i in the array.

If the array is smaller than i elements, 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 array is not large enough from the case where the array starts with an undefined value.

See also operator[](), first(), last(), insert(), prepend(), append(), removeAt(), and takeAt().

### QCborArray::iterator QCborArray::begin()

Returns an array iterator pointing to the first item in this array. If the array is empty, then this function returns the same as end().

See also constBegin() and end().

### QCborArray::const_iterator QCborArray::begin() const

Returns an array iterator pointing to the first item in this array. If the array is empty, then this function returns the same as end().

See also constBegin() and constEnd().

### QCborArray::const_iterator QCborArray::cbegin() const

Returns an array iterator pointing to the first item in this array. If the array is empty, then this function returns the same as end().

See also constBegin() and constEnd().

### QCborArray::const_iterator QCborArray::cend() const

Returns an array iterator pointing to just after the last element in this array.

See also constBegin() and constEnd().

### void QCborArray::clear()

Empties this array.

See also isEmpty().

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

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

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

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

### QCborArray::const_iterator QCborArray::constBegin() const

Returns an array iterator pointing to the first item in this array. If the array is empty, then this function returns the same as end().

See also begin() and constEnd().

### QCborArray::const_iterator QCborArray::constEnd() const

Returns an array iterator pointing to just after the last element in this array.

See also constBegin() and end().

### bool QCborArray::contains(const QCborValue &value) const

Returns true if this array contains an element that is equal to value.

### bool QCborArray::empty() const

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

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

See also isEmpty() and size().

### QCborArray::iterator QCborArray::end()

Returns an array iterator pointing to just after the last element in this array.

See also begin() and constEnd().

### QCborArray::const_iterator QCborArray::end() const

Returns an array iterator pointing to just after the last element in this array.

See also constBegin() and constEnd().

### QCborValueRef QCborArray::first()

Returns a reference to the first QCborValue of this array. The array must not be empty.

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

See also operator[](), at(), last(), insert(), prepend(), append(), removeAt(), and takeAt().

### QCborValue QCborArray::first() const

Returns the first QCborValue of this array.

If the array is empty, 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 array is not large enough from the case where the array ends with an undefined value.

See also operator[](), at(), last(), insert(), prepend(), append(), removeAt(), and takeAt().

### `[static]` QCborArray QCborArray::fromJsonArray(const QJsonArray &array)

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

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

See also toJsonArray(), toVariantList(), QCborValue::fromJsonValue(), and QCborMap::fromJsonObject().

### `[static noexcept, since 6.3]` QCborArray QCborArray::fromJsonArray(QJsonArray &&array)

This is an overloaded function.

This function was introduced in Qt 6.3.

### `[static]` QCborArray QCborArray::fromStringList(const QStringList &list)

Returns a QCborArray containing all the strings found in the list list.

See also fromVariantList() and fromJsonArray().

### `[static]` QCborArray QCborArray::fromVariantList(const QVariantList &list)

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

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

See also toVariantList(), fromStringList(), fromJsonArray(), and QCborMap::fromVariantMap().

### bool QCborArray::isEmpty() const

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

See also size() and clear().

### QCborValueRef QCborArray::last()

Returns a reference to the last QCborValue of this array. The array must not be empty.

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

See also operator[](), at(), first(), insert(), prepend(), append(), removeAt(), and takeAt().

### QCborValue QCborArray::last() const

Returns the last QCborValue of this array.

If the array is empty, 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 array is not large enough from the case where the array ends with an undefined value.

See also operator[](), at(), first(), insert(), prepend(), append(), removeAt(), and takeAt().

### void QCborArray::pop_back()

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

Removes the last element of this array. The array must not be empty before the removal

See also removeLast(), takeLast(), pop_front(), push_back(), append(), and insert().

### void QCborArray::pop_front()

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

Removes the first element of this array. The array must not be empty before the removal

See also removeFirst(), takeFirst(), pop_back(), push_front(), prepend(), and insert().

### void QCborArray::push_back(const QCborValue &t)

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

Appends the element t to this array.

See also append(), push_front(), pop_back(), prepend(), and insert().

### void QCborArray::push_front(const QCborValue &t)

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

Prepends the element t to this array.

See also prepend(), push_back(), pop_front(), append(), and insert().

### void QCborArray::removeAt(qsizetype i)

Removes the item at position i from the array. The array must have more than i elements before the removal.

See also takeAt(), removeFirst(), removeLast(), at(), operator[](), insert(), prepend(), and append().

### void QCborArray::removeFirst()

Removes the first item in the array, making the second element become the first. The array must not be empty before this call.

See also removeAt(), takeFirst(), removeLast(), at(), operator[](), insert(), prepend(), and append().

### void QCborArray::removeLast()

Removes the last item in the array. The array must not be empty before this call.

See also removeAt(), takeLast(), removeFirst(), at(), operator[](), insert(), prepend(), and append().

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

Returns the size of this array.

See also isEmpty().

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

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

### QCborValue QCborArray::takeAt(qsizetype i)

Removes the item at position i from the array and returns it. The array must have more than i elements before the removal.

See also removeAt(), removeFirst(), removeLast(), at(), operator[](), insert(), prepend(), and append().

### QCborValue QCborArray::takeFirst()

Removes the first item in the array and returns it, making the second element become the first. The array must not be empty before this call.

See also takeAt(), removeFirst(), removeLast(), at(), operator[](), insert(), prepend(), and append().

### QCborValue QCborArray::takeLast()

Removes the last item in the array and returns it. The array must not be empty before this call.

See also takeAt(), removeLast(), removeFirst(), at(), operator[](), insert(), prepend(), and append().

### QCborValue QCborArray::toCborValue() const

Explicitly construcuts a QCborValue object that represents this array. This function is usually not necessary since QCborValue has a constructor for QCborArray, so the conversion is implicit.

Converting QCborArray to QCborValue allows it to be used in any context where QCborValues can be used, including as items in QCborArrays and as keys and mapped types in QCborMap. Converting an array to QCborValue allows access to QCborValue::toCbor().

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

### QJsonArray QCborArray::toJsonArray() const

Recursively converts every QCborValue element in this array to JSON using QCborValue::toJsonValue() and returns the corresponding QJsonArray composed of those elements.

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().

See also fromJsonArray(), QCborValue::toJsonValue(), QCborMap::toJsonObject(), and toVariantList().

### QVariantList QCborArray::toVariantList() const

Recursively converts each QCborValue in this array using QCborValue::toVariant() and returns the QVariantList composed of the converted items.

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

See also fromVariantList(), fromStringList(), toJsonArray(), QCborValue::toVariant(), and QCborMap::toVariantMap().

### QCborArray QCborArray::operator+(const QCborValue &v) const

Returns a new QCborArray containing the same elements as this array, plus v appended as the last element.

See also operator+=(), operator<<(), and append().

### QCborArray &QCborArray::operator+=(const QCborValue &v)

Appends v to this array and returns a reference to this array.

See also append(), insert(), operator+(), and operator<<().

### QCborArray &QCborArray::operator<<(const QCborValue &v)

Appends v to this array and returns a reference to this array.

See also append(), insert(), operator+(), and operator+=().

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

Replaces the contents of this array with that found in other, then returns a reference to this object.

### QCborValueRef QCborArray::operator[](qsizetype i)

Returns a reference to the QCborValue element at position i in the array. Indices beyond the end of the array will grow the array, filling with undefined entries, until it has an entry at the specified index.

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

See also at(), first(), last(), insert(), prepend(), append(), removeAt(), and takeAt().

### const QCborValue QCborArray::operator[](qsizetype i) const

Returns the QCborValue element at position i in the array.

If the array is smaller than i elements, 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 array is not large enough from the case where the array contains an undefined value at position i.

See also at(), first(), last(), insert(), prepend(), append(), removeAt(), and takeAt().

## Related Non-Members

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

Compares lhs and rhs arrays, comparing each element in sequence, and returns true if the two arrays' contents are different, false otherwise.

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

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

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

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

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

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

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

Compares lhs and rhs arrays, comparing each element in sequence, and returns true if lhs array should be sorted before rhs, or if both arrays contains the same elements, false otherwise.

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

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

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

Compares lhs and rhs arrays, comparing each element in sequence, and returns true if both arrays contains the same elements, false otherwise.

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

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

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

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

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

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

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

Compares lhs and rhs arrays, comparing each element in sequence, and returns true if lhs array should be sorted after rhs, or if both arrays contains the same elements, false otherwise.

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

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