QVarLengthArray类
template <typename T, qsizetype Prealloc = QVarLengthArrayDefaultPrealloc> class QVarLengthArrayQVarLengthArray类提供了一种低级别的可变长度数组。 更多...
头文件 | #include <QVarLengthArray> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
继承 | QVLABase 和 QVLAStorage |
注意: 此类中的所有函数都是 可重入的。
公共类型
const_iterator | |
const_pointer | |
const_reference | |
const_reverse_iterator | |
difference_type | |
iterator | |
pointer | |
reference | |
reverse_iterator | |
size_type | |
value_type |
公共函数
QVarLengthArray() | |
QVarLengthArray(qsizetype size) | |
(since 6.4) | QVarLengthArray(qsizetype size, const T &v) |
QVarLengthArray(std::initializer_list<T> args) | |
QVarLengthArray(InputIterator first, InputIterator last) | |
QVarLengthArray(const QVarLengthArray<T, Prealloc> &other) | |
(since 6.0) | QVarLengthArray(QVarLengthArray<T, Prealloc> &&other) |
~QVarLengthArray() | |
void | append(const T &t) |
void | append(T &&t) |
void | append(const T *buf, qsizetype size) |
(since 6.6) QVarLengthArray<T, Prealloc> & | assign(qsizetype n, const T &t) |
(since 6.6) QVarLengthArray<T, Prealloc> & | assign(InputIterator first, InputIterator last) |
(since 6.6) QVarLengthArray<T, Prealloc> & | assign(std::initializer_list<T> list) |
const T & | at(qsizetype i) const |
T & | back() |
const T & | back() const |
QVarLengthArray<T, Prealloc>::iterator | begin() |
QVarLengthArray<T, Prealloc>::const_iterator | begin() const |
qsizetype | capacity() const |
QVarLengthArray<T, Prealloc>::const_iterator | cbegin() const |
QVarLengthArray<T, Prealloc>::const_iterator | cend() const |
void | clear() |
QVarLengthArray<T, Prealloc>::const_iterator | constBegin() const |
const T * | constData() const |
QVarLengthArray<T, Prealloc>::const_iterator | constEnd() const |
bool | contains(const AT &value) const |
qsizetype | count() const |
QVarLengthArray | crbegin() const |
QVarLengthArray | crend() const |
T * | data() |
const T * | data() const |
(since 6.3) QVarLengthArray | emplace(QVarLengthArray |
(since 6.3) T & | emplace_back(Args &&... args) |
bool | empty() const |
QVarLengthArray<T, Prealloc>::iterator | end() |
QVarLengthArray<T, Prealloc>::const_iterator | end() const |
QVarLengthArray<T, Prealloc>::iterator | erase(QVarLengthArray |
QVarLengthArray<T, Prealloc>::iterator | erase(QVarLengthArray |
T & | first() |
const T & | first() const |
T & | front() |
const T & | front() const |
qsizetype | indexOf(const AT &value, qsizetype from = 0) const |
void | insert(qsizetype i, T &&value) |
void | insert(qsizetype i, const T &value) |
void | insert(qsizetype i, qsizetype count, const T &value) |
QVarLengthArray<T, Prealloc>::iterator | insert(QVarLengthArray |
QVarLengthArray<T, Prealloc>::iterator | insert(QVarLengthArray |
QVarLengthArray<T, Prealloc>::iterator | insert(QVarLengthArray |
bool | isEmpty() const |
T & | last() |
const T & | last() const |
qsizetype | lastIndexOf(const AT &value, qsizetype from = -1) const |
qsizetype | length() const |
void | pop_back() |
void | push_back(const T &t) |
void | push_back(T &&t) |
QVarLengthArray | rbegin() |
QVarLengthArray | rbegin() const |
void | remove(qsizetype i, qsizetype count = 1) |
(since 6.1) qsizetype | removeAll(const AT &t) |
(since 6.1) qsizetype | removeIf(Predicate pred) |
void | removeLast() |
(since 6.1) bool | removeOne(const AT &t) |
QVarLengthArray | rend() |
QVarLengthArray | rend() const |
void | replace(qsizetype i, const T &value) |
void | reserve(qsizetype size) |
void | resize(qsizetype size) |
(since 6.4) void | resize(qsizetype size, const T &v) |
void | shrink_to_fit() |
qsizetype | size() const |
void | squeeze() |
T | value(qsizetype i) const |
T | value(qsizetype i, const T &defaultValue) const |
QVarLengthArray | operator+=(const T &value) |
QVarLengthArray | operator+=(T &&value) |
QVarLengthArray | operator<<(const T &value) |
QVarLengthArray | operator<<(T &&value) |
QVarLengthArray | 操作符=(const QVarLengthArray<T, Prealloc> &other) |
(从6.0版本开始) QVarLengthArray<T, Prealloc> & | 操作符=(QVarLengthArray<T, Prealloc> &&other) |
QVarLengthArray | 操作符=(std::initializer_list<T> list) |
T & | 操作符[](qsizetype i) |
const T & | 操作符[](qsizetype i) const |
相关非成员
(since 6.1) qsizetype | erase(QVarLengthArray<T, Prealloc> &array, const AT &t) |
(since 6.1) qsizetype | erase_if(QVarLengthArray<T, Prealloc> &array, Predicate pred) |
size_t | qHash(const QVarLengthArray<T, Prealloc> &key, size_t seed = 0) |
bool | 操作符!=(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right) |
bool | 操作符<(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs) |
bool | 操作符<=(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs) |
bool | 操作符==(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right) |
bool | 操作符>(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs) |
bool | 操作符>=(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs) |
详细信息
C++语言不支持栈上变长数组。例如,以下代码无法编译
int myfunc(int n) { int table[n + 1]; // WRONG ... return table[n]; }
替代方法是动态分配数组到堆(使用new
)
int myfunc(int n) { int *table = new int[n + 1]; ... int ret = table[n]; delete[] table; return ret; }
然而,如果myfunc()函数被应用程序的内循环频繁调用,堆分配可能会成为速度降低的主要原因。
QVarLengthArray尝试填补C++语言中的这一空白。它会在栈上分配一定数量的元素,如果调整为更大的大小,它将自动使用堆。栈分配的优势在于它比堆分配快得多。
示例
int myfunc(int n) { QVarLengthArray<int, 1024> array(n + 1); ... return array[n]; }
在上面的示例中,QVarLengthArray将在栈上预分配1024个元素,并在n+1大于1024之前使用它们。如果您省略第二个模板参数,则使用QVarLengthArray的默认值256。
QVarLengthArray的值类型必须是可赋值数据类型。这涵盖了常见的多数数据类型,但编译器不允许您,例如,存储为一个QWidget;相反,存储为一个QWidget *。
QVarLengthArray和QList一样,提供了一种可调整大小的数组数据结构。这两个类的主要区别是
- QVarLengthArray的API更底层,并且缺乏QList的一些功能。
- 如果值是基本类型,QVarLengthArray不初始化内存。(QList总是这么做。)
- QList使用隐式共享作为一种内存优化。QVarLengthArray不提供该功能;然而,由于其开销减少,它通常在严密的循环中产生更好的性能。
总之,QVarLengthArray是一个更低级的优化类,只适用于非常特定的场景。它在Qt内部使用几个地方,并添加到Qt的公共API中,以便于高级用户的便利。
另请参阅QList。
成员类型文档
[别名]
QVarLengthArray::const_iterator
为const T *提供的类型别名。为了与STL兼容而提供。
[别名]
QVarLengthArray::const_pointer
为const T *提供的类型别名。为了与STL兼容而提供。
[别名]
QVarLengthArray::const_reference
为const T &提供的类型别名。为了与STL兼容而提供。
[别名]
QVarLengthArray::const_reverse_iterator
为std::reverse_iterator< const T* >提供的类型别名。为了与STL兼容而提供。
[别名]
QVarLengthArray::difference_type
为ptrdiff_t提供的类型别名。为了与STL兼容而提供。
[别名]
QVarLengthArray::iterator
为T *提供的类型别名。为了与STL兼容而提供。
[别名]
QVarLengthArray::pointer
为T *提供的类型别名。为了与STL兼容而提供。
[别名]
QVarLengthArray::reference
为T &提供的类型别名。为了与STL兼容而提供。
[别名]
QVarLengthArray::reverse_iterator
为std::reverse_iterator
[别名]
QVarLengthArray::size_type
为int提供的类型别名。为了与STL兼容而提供。
[别名]
QVarLengthArray::value_type
为T提供的类型别名。为了与STL兼容而提供。
成员函数文档
void QVarLengthArray::insert(qsizetype i, T &&value)
void QVarLengthArray::insert(qsizetype i, const T &value)
在数组的索引位置 i 处插入 value 。如果 i 是 0,该值被插入到向量的开始。如果 i 是 大小(),该值被附加到向量。
对于大型数组,此操作可能较慢(线性时间),因为它需要在内存中移动 i 和上述的所有条目,向更高位移动一个位置。如果您需要一个提供快速 插入() 函数的容器类,请使用 std::list。
另请参阅remove()。
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::insert(QVarLengthArray<T, Prealloc>::const_iterator before, T &&value)
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::insert(QVarLengthArray<T, Prealloc>::const_iterator before, const T &value)
这是一个重载函数。
在迭代器before所指的项目之前插入value。返回指向插入项目的迭代器。
[noexcept]
QVarLengthArray::QVarLengthArray()
构建初始大小为零的数组。
[explicit]
QVarLengthArray::QVarLengthArray(qsizetype size)
构建�始大小为size个元素的数组。
如果值类型是原始类型(例如,char,int,float)或指针类型(例如,QWidget *),则元素不会被初始化。对于其他类型,元素使用默认构造值进行初始化。
[explicit, since 6.4]
QVarLengthArray::QVarLengthArray(qsizetype size, const T &v)
构建一个初始大小为size的数组,并用v的副本填充。
注意:此构造函数仅在T
可拷贝构造时可用。
此函数是在Qt 6.4中引入的。
QVarLengthArray::QVarLengthArray(std::initializer_list<T> args)
从args给出的std::initializer_list构建数组。
template <typename InputIterator, QVarLengthArray<T, Prealloc>::if_input_iterator
构建一个包含迭代器范围[i translate="no">first[i translate="no">last]内容的数组。
此构造函数只在InputIterator满足LegacyInputIterator的要求时才参与重载解析。
InputIterator
的值类型必须可转换为T
。
QVarLengthArray::QVarLengthArray(const QVarLengthArray<T, Prealloc> &other)
构建other的副本。
将此变量长度数组从other移动构造。移动后,other为空。
[noexcept(...), since 6.0]
QVarLengthArray::QVarLengthArray(QVarLengthArray<T, Prealloc> &&other)
从other移动构造此变量长度数组。移动后,other为空。
此函数是在Qt 6.0中引入的。
注意:当"std::is_nothrow_move_constructible_v<T>"为真时,此函数不会抛出任何异常。
QVarLengthArray::~QVarLengthArray()
销毁数组。
void QVarLengthArray::append(const T &t)
将条目 t 添加到数组中,如果需要则扩展数组。
参见removeLast。
void QVarLengthArray::append(T &&t)
此函数重载了 append。
注意:与 append() 的 lvalue 重载不同,将已存在于 *this
中的对象的引用传递过去会导致未定义的行为
vla.append(std::move(vla[0])); // BUG: passing an object that is already in the container
void QVarLengthArray::append(const T *buf, qsizetype size)
将 buf 引用的 size 个元素添加到数组中。
[since 6.6]
QVarLengthArray<T, Prealloc> &QVarLengthArray::assign(qsizetype n, const T &t)
用 t 的 n 个副本替换此容器的内容。
此容器的长度将等于 n。如果 n 超过容器的容量,此函数将只分配内存。
此函数是在 Qt 6.6 中引入的。
[since 6.6]
模板 <typename InputIterator, QVarLengthArray<T, Prealloc>::if_input_iterator= true> QVarLengthArray<T, Prealloc> &QVarLengthArray::assign(InputIterator first, InputIterator last)
用迭代器范围 [first, last] 中的元素副本替换此容器的内容。
此容器的长度将等于范围 [first, last] 中的元素数量。如果范围中的元素数量超过容器的容量,此函数将只分配内存。
如果 InputIterator
满足 LegacyInputIterator 的要求,则此重载只参与重载解析。
如果任一参数是 *this 的迭代器,则行为是未定义的。
此函数是在 Qt 6.6 中引入的。
[since 6.6]
QVarLengthArray<T, Prealloc> &QVarLengthArray::assign(std::initializer_list<T> list)
用 list 的元素副本替换此容器的内容。
此容器的长度将等于 list 中的元素数量。
如果 list 中的元素数量超过容器的容量,此函数将只分配内存。
此函数是在 Qt 6.6 中引入的。
const T &QVarLengthArray::at(qsizetype i) const
返回索引位置 i 的条目的引用。
i 必须是数组中的一个有效索引位置(即,0 <= i < size()()).
参见value() 和 operator[]().
T &QVarLengthArray::back()
与 last 相同。提供与 STL 兼容性。
const T &QVarLengthArray::back() const
这是一个重载函数。
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::begin()
返回一个指向数组第一个项目的STL风格迭代器。
另请参阅 constBegin() 和 end()。
QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::begin() const
这是一个重载函数。
qsizetype QVarLengthArray::capacity() const
返回数组在不强制重新分配的情况下可以存储的最大元素数。
该函数的唯一目的是提供对QVarLengthArray内存使用进行微调的手段。在一般情况下,您很少需要调用此函数。如果您想知道数组中有多少项,请调用size()。
QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::cbegin() const
返回一个指向数组第一个项目的const STL风格迭代器。
QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::cend() const
返回一个指向数组最后一个项目后面的虚拟项目的const STL风格迭代器。
void QVarLengthArray::clear()
从数组中删除所有元素。
与resize(0)相同。
QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::constBegin() const
返回一个指向数组第一个项目的const STL风格迭代器。
const T *QVarLengthArray::constData() const
返回指向存储在数组中的数据的const指针。可以通过此指针访问数组中的项目。只要数组不重新分配,该指针仍然有效。
此函数主要用于将数组传递给接受纯C++数组的函数。
另请参阅 data() 和 operator[]()。
QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::constEnd() const
返回一个指向数组最后一个项目后面的虚拟项目的const STL风格迭代器。
另请参阅 constBegin() 和 end()。
模板 <typename AT = T> bool QVarLengthArray::contains(const AT &value) const
如果数组包含对value的实例,则返回true
;否则返回false
。
此函数需要值类型实现operator==()
。
另请参阅indexOf()和lastIndexOf()。
qsizetype QVarLengthArray::count() const
等于size()。
QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::crbegin() const
返回一个指向可变长度数组中第一项(逆序)的const STL-style逆序迭代器的指针。
QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::crend() const
返回一个指向可变长度数组中最后一项之后(逆序)的const STL-style逆序迭代器的指针。
T *QVarLengthArray::data()
返回存储在数组中的数据的指针。可以用这个指针访问和修改数组中的项。
示例
QVarLengthArray<int> array(10); int *data = array.data(); for (int i = 0; i < 10; ++i) data[i] = 2 * i;
只要数组没有被重新分配,这个指针就保持有效。
此函数主要用于将数组传递给接受纯C++数组的函数。
另请参阅constData()和operator[]()。
const T *QVarLengthArray::data() const
这是一个重载函数。
[since 6.3]
模板 <typename... Args> QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::emplace(QVarLengthArray<T, Prealloc>::const_iterator pos, Args &&... args)
在由迭代器pos指向的项之前插入一个项,将args传递给其构造函数。
返回指向已插入项的迭代器。
此函数自Qt 6.3起引入。
[since 6.3]
模板 <typename... Args> T &QVarLengthArray::emplace_back(Args &&... args)
在此QVarLengthArray的末尾插入一个项,将args传递给其构造函数。
返回已插入项的引用。
此函数自Qt 6.3起引入。
bool QVarLengthArray::empty() const
如果数组的大小为0,则返回true
;否则返回false
。
与isEmpty()相同。提供以实现STL兼容性。
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::end()
返回一个指向数组的最后一个元素之后的虚拟项的STL风格迭代器。
QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::end() const
这是一个重载函数。
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::erase(QVarLengthArray<T, Prealloc>::const_iterator pos)
从向量中移除由迭代器pos指向的项,并返回对向量中下一个项的迭代器(可能为end())。
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::erase(QVarLengthArray<T, Prealloc>::const_iterator begin, QVarLengthArray<T, Prealloc>::const_iterator end)
这是一个重载函数。
从begin移除所有项到end(不包括)。返回对调用前end引用的同一项的迭代器。
T &QVarLengthArray::first()
返回对数组中第一个元素的引用。数组不能为空。如果数组可能为空,在调用此函数之前检查isEmpty
const T &QVarLengthArray::first() const
这是一个重载函数。
T &QVarLengthArray::front()
与first()相同。提供以实现STL兼容性。
const T &QVarLengthArray::front() const
这是一个重载函数。
template <typename AT = T> qsizetype QVarLengthArray::indexOf(const AT &value, qsizetype from = 0) const
返回数组中value第一次出现的索引位置,从索引位置from进行搜索。如果没有匹配的项,则返回-1。
此函数需要值类型实现operator==()
。
另请参阅 lastIndexOf()和contains()。
void QVarLengthArray::insert(qsizetype i, qsizetype count, const T &value)
这是一个重载函数。
在向量的索引位置i插入count个value的副本。
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::insert(QVarLengthArray<T, Prealloc>::const_iterator before, qsizetype count, const T &value)
在迭代器 before 所指的项目前面插入 count 个 value 的副本。返回指向插入项目中的第一个项目的迭代器。
bool QVarLengthArray::isEmpty() const
如果数组的大小为0,则返回true
;否则返回false
。
T &QVarLengthArray::last()
返回数组的最后一个项目的引用。数组不能为空。如果数组可以不为空,在调用此函数之前检查 isEmpty()。
const T &QVarLengthArray::last() const
这是一个重载函数。
template <typename AT = T> qsizetype QVarLengthArray::lastIndexOf(const AT &value, qsizetype from = -1) const
返回数组中值 value 的最后一个出现位置的索引,从索引位置 from 向后搜索。如果 from 为 -1(默认值),则搜索从最后一个项目开始。如果没有找到匹配项,则返回 -1。
此函数需要值类型实现operator==()
。
qsizetype QVarLengthArray::length() const
等于size()。
void QVarLengthArray::pop_back()
与 removeLast 相同。提供以实现 STL 兼容性。
void QVarLengthArray::push_back(const T &t)
将项目 t 添加到数组中,如果需要则扩展数组。提供以实现 STL 兼容性。
void QVarLengthArray::push_back(T &&t)
此函数重载 push_back。
注意:与 push_back() 的 lvalue 载荷重载不同,传入已属于 *this
的对象的引用将导致未定义的行为
vla.push_back(std::move(vla[0])); // BUG: passing an object that is already in the container
QVarLengthArray<T, Prealloc>::reverse_iterator QVarLengthArray::rbegin()
返回一个指向可变长度数组中第一个项目的 STL 样式逆序迭代器,顺序相反。
另请参阅begin(),crbegin() 和 rend()。
QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::rbegin() const
这是一个重载函数。
void QVarLengthArray::remove(qsizetype i, qsizetype count = 1)
这是一个重载函数。
从索引位置 i 开始,从数组中删除 count 个元素。
[since 6.1]
模板 <typename AT = T> qsizetype QVarLengthArray::removeAll(const AT &t)
从数组中删除所有与 t 比较相等的元素。如果有任何元素被删除,则返回删除的元素数量。
该函数从 Qt 6.1 版本开始引入。
另请参阅removeOne()。
[since 6.1]
模板 <typename Predicate> qsizetype QVarLengthArray::removeIf(Predicate pred)
从数组中删除所有使谓词 pred 返回 true 的元素。如果有任何元素被删除,则返回删除的元素数量。
该函数从 Qt 6.1 版本开始引入。
另请参阅removeAll()。
void QVarLengthArray::removeLast()
减少数组大小一个元素。分配的大小不被改变。
另请参阅append()。
[since 6.1]
模板 <typename AT = T> bool QVarLengthArray::removeOne(const AT &t)
从数组中删除第一个与 t 相等的元素。返回是否实际上删除了元素。
该函数从 Qt 6.1 版本开始引入。
另请参阅removeAll()。
QVarLengthArray<T, Prealloc>::reverse_iterator QVarLengthArray::rend()
返回一个指向可变长度数组中最后一个元素之后的一个的 STL样式反向迭代器,顺序相反。
QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::rend() const
这是一个重载函数。
void QVarLengthArray::replace(qsizetype i, const T &value)
用 value 替换索引位置 i 的项目。
i 必须是数组中的一个有效索引位置(即,0 <= i < size()()).
另请参阅operator[]() 和 remove()。
void QVarLengthArray::reserve(qsizetype size)
尝试为至少 size 个元素分配内存。如果您事先知道数组可以有多大,您可以调用此函数,如果在调用 resize() 时,您可能获得更好的性能。如果 size 低估了,最坏的情况是 QVarLengthArray 将稍微慢一些。
此函数的唯一目的是提供一个手段,以微调QVarLengthArray的内存使用。一般而言,您很少需要调用此函数。如果您想更改数组的长度,请调用resize()。
void QVarLengthArray::resize(qsizetype size)
将数组的长度设置为size。如果size大于当前长度,将在末尾添加元素。如果size小于当前长度,将移除末尾的元素。
如果值类型是原始类型(例如,char,int,float)或指针类型(例如,QWidget *),则新元素不会被初始化。对于其他类型,元素将使用默认构造值初始化。
[since 6.4]
void QVarLengthArray::resize(qsizetype size, const T &v)
将数组的长度设置为size。如果size大于当前长度,将在末尾添加v的副本。如果size小于当前长度,将移除末尾的元素。
注意:此函数仅当T
可复制构造时才可用。
此函数是在Qt 6.4中引入的。
void QVarLengthArray::shrink_to_fit()
等同于squeeze。提供以与STL兼容。
qsizetype QVarLengthArray::size() const
返回数组中的元素数量。
void QVarLengthArray::squeeze()
释放存储项所需的任何内存。如果容器可以将其存储放在堆栈分配上,它将释放堆分配并将元素复制回堆栈。
此函数的唯一目的是提供一个手段,以微调QVarLengthArray的内存使用。一般而言,您很少需要调用此函数。
另请参阅 reserve,capacity,和resize。
T QVarLengthArray::value(qsizetype i) const
返回索引位置i处的值。
如果索引i超出范围,则此函数返回一个默认构造值。如果您确定i在范围内,您可以使用at(),它的速度略快。
T QVarLengthArray::value(qsizetype i, const T &defaultValue) const
这是一个重载函数。
如果索引i超出范围,则此函数返回defaultValue。
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator+=(const T &value)
将 value 添加到数组中,并返回对此向量的引用。
另请参阅append() 和 operator<<()。
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator+=(T &&value)
这是一个重载函数。
另请参阅append() 和 operator<<()。
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator<<(const T &value)
将 value 添加到数组中,并返回对此向量的引用。
另请参阅append() 和 operator+=()。
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator<<(T &&value)
这是一个重载函数。
另请参阅append() 和 operator+=()。
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(const QVarLengthArray<T, Prealloc> &other)
将 other 分配给此数组,并返回对此数组的引用。
[noexcept(...), since 6.0]
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(QVarLengthArray<T, Prealloc> &&other)
将 other 移动分配给此数组,并返回对此数组的引用。移动后,other 将为空。
此函数是在Qt 6.0中引入的。
注意:当"std::is_nothrow_move_constructible_v<T>"为真时,此函数不会抛出任何异常。
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(std::initializer_list<T> list)
将 list 的值分配给此数组,并返回对此数组的引用。
T &QVarLengthArray::operator[](qsizetype i)
返回索引位置 i 的条目的引用。
i 必须是数组中的一个有效索引位置(即,0 <= i < size()()).
const T &QVarLengthArray::operator[](qsizetype i) const
这是一个重载函数。
相关非成员函数
[since 6.1]
模板 <typename T, qsizetype Prealloc, typename AT> qsizetype erase(QVarLengthArray<T, Prealloc> &array, const AT &t)
从数组 array 中删除所有与 t 比较相等的元素。如果删除任何元素,则返回删除的元素数量。
注意:t 不允许是 array 内部元素的引用。如果您无法确定是否不是这种情况,请复制 t 并使用此副本调用此函数。
该函数从 Qt 6.1 版本开始引入。
另请参阅erase_if。
[since 6.1]
模板 <typename T, qsizetype Prealloc, typename Predicate> qsizetype erase_if(QVarLengthArray<T, Prealloc> &array, Predicate pred)
从列表中移除所有使得谓词 pred 返回 true 的元素。如果有元素被移除,则返回移除的元素数量。
该函数从 Qt 6.1 版本开始引入。
另请参阅 erase。
[noexcept(...)]
模板 <typename T, qsizetype Prealloc> size_t qHash(const QVarLengthArray<T, Prealloc> &key, size_t seed = 0)
使用 seed 作为计算种子来返回 key 的哈希值。
注意: 当 "QtPrivate::QNothrowHashable_v<T>" 为 true 时,此函数不会抛出任何异常。
模板 <typename T, qsizetype Prealloc1, qsizetype Prealloc2> bool operator!=(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right)
如果指定的两个数组,由 left 和 right 指定,不相等,则返回 true
。
两个数组被认为相等,如果它们包含相同的值,并且顺序相同。
此函数需要值类型实现operator==()
。
另请参阅 operator==。
模板 <typename T, qsizetype Prealloc1, qsizetype Prealloc2> bool operator<(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs)
如果变量长度数组 lhs 按字典序小于 rhs,则返回 true
;否则返回 false
。
此函数需要值类型有 operator<()
的实现。
模板 <typename T, qsizetype Prealloc1, qsizetype Prealloc2> bool operator<=(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs)
如果变量长度数组 lhs 按字典序小于或等于 rhs,则返回 true
;否则返回 false
。
此函数需要值类型有 operator<()
的实现。
模板 <typename T, qsizetype Prealloc1, qsizetype Prealloc2> bool operator==(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right)
如果指定的两个数组,由 left 和 right 指定,相等,则返回 true
。
两个数组被认为相等,如果它们包含相同的值,并且顺序相同。
此函数需要值类型实现operator==()
。
另请参阅 operator!=。
模板 <typename T, qsizetype Prealloc1, qsizetype Prealloc2> bool operator>(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs)
如果变量长度数组 lhs 在字典序上大于 rhs,则返回 true
;否则返回 false
。
此函数需要值类型有 operator<()
的实现。
template <typename T, qsizetype Prealloc1, qsizetype Prealloc2> bool operator>=(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs)
如果变量长度数组 lhs 在字典序上大于等于 rhs,则返回 true
;否则返回 false
。
此函数需要值类型有 operator<()
的实现。
© 2024 Qt公司有限公司。本文档中包含的文档贡献为各自所有者的版权。本文档许可协议遵守由自由软件基金会发布的 GNU自由文档许可证版本1.3。Qt及其相关标志为芬兰及/或世界其他国家Qt公司的商标。所有其他商标均为各自所有者的财产。