Класс QVarLengthArray
шаблон <typename T, qsizetype Prealloc> класс QVarLengthArrayКласс QVarLengthArray предоставляет массив переменной длины низкого уровня. Подробнее...
| Заголовок: | #include <QVarLengthArray> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
Примечание: Все функции в этом классе являются многопоточными.
Типы
| const_iterator | |
| const_pointer | |
| const_reference | |
| const_reverse_iterator | |
| difference_type | |
| iterator | |
| pointer | |
| reference | |
| reverse_iterator | |
| size_type | |
| value_type |
Открытые функции
| QVarLengthArray(InputIterator first, InputIterator last) | |
| QVarLengthArray(std::initializer_list<T> args) | |
| QVarLengthArray(QVarLengthArray<T, Prealloc> &&other = Prealloc) | |
| QVarLengthArray(const QVarLengthArray<T, Prealloc> &other = Prealloc) | |
| QVarLengthArray(qsizetype size) | |
| QVarLengthArray() | |
| QVarLengthArray<T, Prealloc> & | operator=(QVarLengthArray<T, Prealloc> &&other = Prealloc) |
| QVarLengthArray<T, Prealloc> & | operator=(const QVarLengthArray<T, Prealloc> &other = Prealloc) |
| ~QVarLengthArray() | |
| void | append(const T &t) |
| void | append(T &&t) |
| void | append(const T *buf, qsizetype size) |
| const T & | at(qsizetype i) const |
| T & | back() |
| const T & | back() const |
| QVarLengthArray::iterator | begin() |
| QVarLengthArray::const_iterator | begin() const |
| qsizetype | capacity() const |
| QVarLengthArray::const_iterator | cbegin() const |
| QVarLengthArray::const_iterator | cend() const |
| void | clear() |
| QVarLengthArray::const_iterator | constBegin() const |
| const T * | constData() const |
| QVarLengthArray::const_iterator | constEnd() const |
| bool | contains(const AT &value) const |
| qsizetype | count() const |
| QVarLengthArray::const_reverse_iterator | crbegin() const |
| QVarLengthArray::const_reverse_iterator | crend() const |
| T * | data() |
| const T * | data() const |
| bool | empty() const |
| QVarLengthArray::iterator | end() |
| QVarLengthArray::const_iterator | end() const |
| QVarLengthArray::iterator | erase(QVarLengthArray::const_iterator pos) |
| QVarLengthArray::iterator | erase(QVarLengthArray::const_iterator begin, QVarLengthArray::const_iterator end) |
| 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::iterator | insert(QVarLengthArray::const_iterator before, qsizetype count, const T &value) |
| QVarLengthArray::iterator | insert(QVarLengthArray::const_iterator before, T &&value) |
| QVarLengthArray::iterator | insert(QVarLengthArray::const_iterator before, const T &value) |
| 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 | prepend(T &&value) |
| void | prepend(const T &value) |
| void | push_back(const T &t) |
| void | push_back(T &&t) |
| QVarLengthArray::reverse_iterator | rbegin() |
| QVarLengthArray::const_reverse_iterator | rbegin() const |
| void | remove(qsizetype i) |
| void | remove(qsizetype i, qsizetype count) |
| qsizetype | removeAll(const AT &t) |
| qsizetype | removeIf(Predicate pred) |
| void | removeLast() |
| bool | removeOne(const AT &t) |
| QVarLengthArray::reverse_iterator | rend() |
| QVarLengthArray::const_reverse_iterator | rend() const |
| void | replace(qsizetype i, const T &value) |
| void | reserve(qsizetype size) |
| void | resize(qsizetype size) |
| void | shrink_to_fit() |
| qsizetype | size() const |
| void | squeeze() |
| T | value(qsizetype i) const |
| T | value(qsizetype i, const T &defaultValue) const |
| QVarLengthArray<T, Prealloc> & | operator+=(const T &value) |
| QVarLengthArray<T, Prealloc> & | operator+=(T &&value) |
| QVarLengthArray<T, Prealloc> & | operator<<(const T &value) |
| QVarLengthArray<T, Prealloc> & | operator<<(T &&value) |
| QVarLengthArray<T, Prealloc> & | operator=(std::initializer_list<T> list) |
| T & | operator[](qsizetype i) |
| const T & | operator[](qsizetype i) const |
Связанные нечленные функции
| qsizetype | erase(QVarLengthArray<T, Prealloc> &array = Prealloc, const AT &t) |
| qsizetype | erase_if(QVarLengthArray<T, Prealloc> &array = Prealloc, Predicate pred) |
| size_t | qHash(const QVarLengthArray<T, Prealloc> &key = Prealloc, size_t seed = 0) |
| bool | operator!=(const QVarLengthArray<T, Prealloc1> &left = Prealloc1, const QVarLengthArray<T, Prealloc2> &right = Prealloc2) |
| bool | operator<(const QVarLengthArray<T, Prealloc1> &lhs = Prealloc1, const QVarLengthArray<T, Prealloc2> &rhs = Prealloc2) |
| bool | operator<=(const QVarLengthArray<T, Prealloc1> &lhs = Prealloc1, const QVarLengthArray<T, Prealloc2> &rhs = Prealloc2) |
| bool | operator==(const QVarLengthArray<T, Prealloc1> &left = Prealloc1, const QVarLengthArray<T, Prealloc2> &right = Prealloc2) |
| bool | operator>(const QVarLengthArray<T, Prealloc1> &lhs = Prealloc1, const QVarLengthArray<T, Prealloc2> &rhs = Prealloc2) |
| bool | operator>=(const QVarLengthArray<T, Prealloc1> &lhs = Prealloc1, const QVarLengthArray<T, Prealloc2> &rhs = Prealloc2) |
Подробное описание
Язык 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, предоставляет структуру данных динамического массива. Основные различия между двумя классами:
- API QVarLengthArray значительно более низкоуровневый и лишен некоторых функций QList.
- QVarLengthArray не инициализирует память, если значение — базовый тип. (QList всегда делает это.)
- QList использует неявное совместное использование в качестве оптимизации памяти. QVarLengthArray не предоставляет эту функцию; однако, она обычно обеспечивает немного лучшую производительность из-за уменьшения накладных расходов, особенно в уплотнённых циклах.
В заключение, QVarLengthArray — это оптимизирующий низкоуровневый класс, который имеет смысл только в очень конкретных случаях. Он используется в нескольких местах внутри Qt и был добавлен в общедоступный API Qt для удобства продвинутых пользователей.
См. также QList.
Документация по типам членов
QVarLengthArray::const_iterator
Тип-синоним для const T *. Предоставлен для совместимости со STL.
QVarLengthArray::const_pointer
Тип-синоним для const T *. Предоставлен для совместимости со STL.
QVarLengthArray::const_reference
Тип-синоним для const T &. Предоставлен для совместимости со STL.
[since 5.6] QVarLengthArray::const_reverse_iterator
Тип-синоним для std::reverse_iterator<const T*>. Предоставлен для совместимости со STL.
Этот тип-синоним был введён в Qt 5.6.
QVarLengthArray::difference_type
Тип-синоним для ptrdiff_t. Предоставлен для совместимости со STL.
QVarLengthArray::iterator
Тип-синоним для T *. Предоставлен для совместимости со STL.
QVarLengthArray::pointer
Тип-синоним для T *. Предоставлен для совместимости со STL.
QVarLengthArray::reference
Тип-синоним для T &. Предоставлен для совместимости со STL.
[since 5.6] QVarLengthArray::reverse_iterator
Тип-синоним для std::reverse_iterator<T*>. Предоставлен для совместимости со STL.
Этот тип-синоним был введён в Qt 5.6.
QVarLengthArray::size_type
Тип-синоним для int. Предоставлен для совместимости со STL.
QVarLengthArray::value_type
Тип-синоним для T. Предоставлен для совместимости со STL.
Документация по функциям-членам
QVarLengthArray::iterator QVarLengthArray::insert(QVarLengthArray::const_iterator before, T &&value)
QVarLengthArray::iterator QVarLengthArray::insert(QVarLengthArray::const_iterator before, const T &value)
Это перегруженный метод.
Вставляет value перед элементом, на который указывает итератор before. Возвращает итератор, указывающий на вставленный элемент.
void QVarLengthArray::insert(qsizetype i, T &&value)
void QVarLengthArray::insert(qsizetype i, const T &value)
Вставляет value по индексу i в массив. Если i равно 0, значение добавляется в начало массива. Если i равно size(), значение добавляется в конец массива.
Для больших массивов эта операция может быть медленной (линейное время), так как требует перемещения всех элементов с индексов i и выше на одну позицию в памяти. Если вам нужен класс контейнера с быстрой функцией insert(), используйте std::list вместо него.
См. также remove().
void QVarLengthArray::prepend(T &&value)
void QVarLengthArray::prepend(const T &value)
Вставляет value в начало массива.
Это то же самое, что и vector.insert(0, value).
Для больших массивов эта операция может быть медленной (линейное время), так как требует перемещения всех элементов массива на одну позицию в памяти. Если вам нужен класс контейнера с быстрой функцией prepend(), используйте std::list вместо него.
См. также append() и insert().
[since 5.14] template <typename InputIterator> QVarLengthArray::QVarLengthArray(InputIterator first, InputIterator last)
Конструирует массив с содержимым в диапазоне итераторов [first, last).
Тип значения InputIterator должен быть преобразуем к T.
Эта функция была добавлена в Qt 5.14.
[since 5.5] QVarLengthArray::QVarLengthArray(std::initializer_list<T> args)
Конструирует массив из std::initializer_list, заданной args.
Этот конструктор активен только если компилятор поддерживает C++11 initializer lists.
Эта функция была добавлена в Qt 5.5.
[since 6.0] QVarLengthArray::QVarLengthArray(QVarLengthArray<T, Prealloc> &&other = Prealloc)
Конструирует данную переменную длину массива из other. После перемещения other становится пустым.
Эта функция была добавлена в Qt 6.0.
QVarLengthArray::QVarLengthArray(const QVarLengthArray<T, Prealloc> &other = Prealloc)
Конструирует копию other.
QVarLengthArray::QVarLengthArray(qsizetype size)
Конструирует массив с начальным размером size элементов.
Если тип значения является примитивным типом (например, char, int, float) или типом указателя (например, QWidget *), элементы не инициализируются. Для других типов элементы инициализируются со значением по умолчанию.
QVarLengthArray::QVarLengthArray()
Конструирует массив с начальным размером ноль.
[since 6.0] QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(QVarLengthArray<T, Prealloc> &&other = Prealloc)
Перемещает присвоение other в этот массив и возвращает ссылку на этот массив. После перемещения other становится пустым.
Эта функция была добавлена в Qt 6.0.
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(const QVarLengthArray<T, Prealloc> &other = Prealloc)
Присваивает other этому массиву и возвращает ссылку на этот массив.
QVarLengthArray::~QVarLengthArray()
Удаляет массив.
void QVarLengthArray::append(const T &t)
Добавляет элемент t в конец массива, увеличивая его, если необходимо.
См. также removeLast().
[since 5.9] void QVarLengthArray::append(T &&t)
Этот метод перегружен.
Примечание: В отличие от перегрузки append() для ссылок на значения, передача ссылки на объект, который уже является элементом *this приводит к неопределённому поведению:
vla.append(std::move(vla[0])); // BUG: passing an object that is already in the container
Эта функция была добавлена в Qt 5.9.
void QVarLengthArray::append(const T *buf, qsizetype size)
Добавляет size элементов, ссылающихся на buf, в этот массив.
const T &QVarLengthArray::at(qsizetype i) const
Возвращает ссылку на элемент по индексу i.
i должен быть корректным индексом в массиве (т.е., 0 <= i < size()).
См. также value() и operator[]().
[since 5.0] T &QVarLengthArray::back()
Аналогично last(). Предоставлено для совместимости со STL.
Эта функция была добавлена в Qt 5.0.
[since 5.0] const T &QVarLengthArray::back() const
Это перегруженный метод.
Эта функция была добавлена в Qt 5.0.
QVarLengthArray::iterator QVarLengthArray::begin()
Возвращает итератор STL, указывающий на первый элемент массива.
См. также constBegin() и end().
QVarLengthArray::const_iterator QVarLengthArray::begin() const
Это перегруженный метод.
qsizetype QVarLengthArray::capacity() const
Возвращает максимальное количество элементов, которое может храниться в массиве без принудительного перераспределения.
Единственная цель этой функции — предоставить способ тонкой настройки использования памяти QVarLengthArray. Как правило, вам редко понадобится вызывать эту функцию. Если вы хотите узнать, сколько элементов в массиве, вызовите size().
См. также reserve() и squeeze().
[since 5.0] QVarLengthArray::const_iterator QVarLengthArray::cbegin() const
Возвращает постоянный итератор STL, указывающий на первый элемент в массиве.
Эта функция была добавлена в Qt 5.0.
[since 5.0] QVarLengthArray::const_iterator QVarLengthArray::cend() const
Возвращает постоянный итератор STL, указывающий на воображаемый элемент после последнего элемента в массиве.
Эта функция была добавлена в Qt 5.0.
void QVarLengthArray::clear()
Удаляет все элементы из массива.
То же самое, что и resize(0).
QVarLengthArray::const_iterator QVarLengthArray::constBegin() const
Возвращает постоянный итератор STL, указывающий на первый элемент в массиве.
См. также begin() и constEnd().
const T *QVarLengthArray::constData() const
Возвращает указатель const на данные, хранящиеся в массиве. Указатель можно использовать для доступа к элементам массива. Указатель остается валидным до тех пор, пока массив не перераспределяется.
Эта функция в основном полезна для передачи массива функции, принимающей обычный массив C++.
См. также data() и operator[]().
QVarLengthArray::const_iterator QVarLengthArray::constEnd() const
Возвращает указатель const итератора STL, указывающего на воображаемый элемент после последнего элемента в массиве.
См. также constBegin() и end().
[since 5.3] template <typename AT> bool QVarLengthArray::contains(const AT &value) const
Возвращает true значение, если массив содержит вхождение value; в противном случае возвращает false.
Для этой функции требуется, чтобы тип значения имел реализацию operator==().
Эта функция была добавлена в Qt 5.3.
См. также indexOf() и lastIndexOf().
qsizetype QVarLengthArray::count() const
То же, что и size().
См. также isEmpty() и resize().
[since 5.6] QVarLengthArray::const_reverse_iterator QVarLengthArray::crbegin() const
Возвращает const итератор обратного типа STL, указывающий на первый элемент в массиве переменной длины в обратном порядке.
Эта функция была добавлена в Qt 5.6.
См. также begin(), rbegin(), и rend().
[since 5.6] QVarLengthArray::const_reverse_iterator QVarLengthArray::crend() const
Возвращает const обратный итератор STL, указывающий на элемент, следующий за последним элементом в массиве переменной длины, в обратном порядке.
Эта функция была добавлена в Qt 5.6.
См. также end(), rend(), и rbegin().
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 5.0] bool QVarLengthArray::empty() const
Возвращает true, если массив имеет размер 0; в противном случае возвращает false.
То же, что и isEmpty(). Предоставлено для совместимости со STL.
Эта функция была добавлена в Qt 5.0.
QVarLengthArray::iterator QVarLengthArray::end()
Возвращает итератор STL, указывающий на воображаемый элемент после последнего элемента в массиве.
См. также begin() и constEnd().
QVarLengthArray::const_iterator QVarLengthArray::end() const
Это перегруженная функция.
QVarLengthArray::iterator QVarLengthArray::erase(QVarLengthArray::const_iterator pos)
Удаляет элемент, на который указывает итератор pos из вектора и возвращает итератор на следующий элемент в векторе (который может быть end()).
См. также insert() и remove().
QVarLengthArray::iterator QVarLengthArray::erase(QVarLengthArray::const_iterator begin, QVarLengthArray::const_iterator end)
Это перегруженная функция.
Удаляет все элементы от begin до (но не включая) end. Возвращает итератор, который ссылался на тот же элемент, что и end до вызова.
T &QVarLengthArray::first()
Возвращает ссылку на первый элемент в массиве. Массив не должен быть пустым. Если массив может быть пустым, проверьте isEmpty() перед вызовом этой функции.
const T &QVarLengthArray::first() const
Это перегруженная функция.
[since 5.0] T &QVarLengthArray::front()
То же, что и first(). Предоставлено для совместимости со STL.
Эта функция была добавлена в Qt 5.0.
[since 5.0] const T &QVarLengthArray::front() const
Это перегруженная функция.
Эта функция была добавлена в Qt 5.0.
[since 5.3] template <typename AT> qsizetype QVarLengthArray::indexOf(const AT &value, qsizetype from = 0) const
Возвращает индекс первого вхождения value в массиве, выполняя поиск вперед с позиции from. Возвращает -1, если ни один элемент не совпал.
Для этой функции требуется, чтобы тип значения имел реализацию operator==().
Эта функция была добавлена в Qt 5.3.
См. также lastIndexOf() и contains().
void QVarLengthArray::insert(qsizetype i, qsizetype count, const T &value)
Это перегруженная функция.
Вставляет count копий value в позицию с индексом i в векторе.
QVarLengthArray::iterator QVarLengthArray::insert(QVarLengthArray::const_iterator before, qsizetype count, const T &value)
Вставляет count копий value перед элементом, на который указывает итератор before. Возвращает итератор, указывающий на первый из вставленных элементов.
bool QVarLengthArray::isEmpty() const
Возвращает true если массив имеет размер 0, иначе возвращает false.
T &QVarLengthArray::last()
Возвращает ссылку на последний элемент в массиве. Массив не должен быть пустым. Если массив может быть пустым, проверьте isEmpty() перед вызовом этой функции.
См. также first() и isEmpty().
const T &QVarLengthArray::last() const
Это перегруженная функция.
[since 5.3] template <typename AT> qsizetype QVarLengthArray::lastIndexOf(const AT &value, qsizetype from = -1) const
Возвращает индекс последнего вхождения значения value в массиве, выполняя поиск назад с позиции from. Если from равно -1 (по умолчанию), поиск начинается с последнего элемента. Возвращает -1, если ни один элемент не совпал.
Для этой функции требуется, чтобы тип значения имел реализацию operator==().
Эта функция была добавлена в Qt 5.3.
См. также indexOf() и contains().
[since 5.0] qsizetype QVarLengthArray::length() const
То же, что и size().
Эта функция была добавлена в Qt 5.0.
См. также isEmpty() и resize().
[since 5.0] void QVarLengthArray::pop_back()
То же, что и removeLast(). Предоставлено для совместимости со STL.
Эта функция была добавлена в Qt 5.0.
[since 5.0] void QVarLengthArray::push_back(const T &t)
Добавляет элемент t в массив, расширяя массив при необходимости. Предоставлено для совместимости со STL.
Эта функция была добавлена в Qt 5.0.
[since 5.9] void QVarLengthArray::push_back(T &&t)
Эта функция перегружает push_back.
Примечание: В отличие от перегрузки push_back() для ссылок на значения, передача ссылки на объект, который уже является элементом *this приводит к неопределённому поведению:
vla.push_back(std::move(vla[0])); // BUG: passing an object that is already in the container
Эта функция была введена в Qt 5.9.
[since 5.6] QVarLengthArray::reverse_iterator QVarLengthArray::rbegin()
Возвращает обратный итератор STL-стиля, указывающий на первый элемент массива переменной длины в обратном порядке.
Эта функция была введена в Qt 5.6.
См. также begin(), crbegin(), и rend().
[since 5.6] QVarLengthArray::const_reverse_iterator QVarLengthArray::rbegin() const
Это перегруженная функция.
Эта функция была введена в Qt 5.6.
void QVarLengthArray::remove(qsizetype i)
Это перегруженная функция.
Удаляет элемент по индексу i.
См. также insert() и replace().
void QVarLengthArray::remove(qsizetype i, qsizetype count)
Это перегруженная функция.
Удаляет count элементов из середины массива, начиная с индекса i.
См. также insert() и replace().
[since 6.1] template <typename AT> qsizetype QVarLengthArray::removeAll(const AT &t)
Удаляет все элементы, равные t, из массива. Возвращает количество удалённых элементов, если таковые были.
Эта функция была введена в Qt 6.1.
См. также removeOne().
[since 6.1] template <typename Predicate> qsizetype QVarLengthArray::removeIf(Predicate pred)
Удаляет все элементы, для которых предикат pred возвращает true, из массива. Возвращает количество удалённых элементов, если таковые были.
Эта функция была введена в Qt 6.1.
См. также removeAll().
void QVarLengthArray::removeLast()
Уменьшает размер массива на единицу. Размер выделенной памяти не изменяется.
См. также append().
[since 6.1] template <typename AT> bool QVarLengthArray::removeOne(const AT &t)
Удаляет первый элемент, равный t, из массива. Возвращает, был ли элемент удалён.
Эта функция была введена в Qt 6.1.
См. также removeAll().
[since 5.6] QVarLengthArray::reverse_iterator QVarLengthArray::rend()
Возвращает обратный итератор STL-стиля, указывающий на позицию сразу после последнего элемента массива переменной длины в обратном порядке.
Эта функция была введена в Qt 5.6.
См. также end(), crend(), и rbegin().
[since 5.6] QVarLengthArray::const_reverse_iterator QVarLengthArray::rend() const
Это перегруженная функция.
Эта функция была введена в Qt 5.6.
void QVarLengthArray::replace(qsizetype i, const T &value)
Заменяет элемент по индексу i значением value.
i должен быть допустимым индексом в массиве (т.е., 0 ≤ i < size()).
См. также operator[]() и remove().
void QVarLengthArray::reserve(qsizetype size)
Пытается выделить память для не менее чем size элементов. Если заранее известно, насколько большим может стать массив, можно вызвать эту функцию, и если часто вызывать resize(), вероятно, это улучшит производительность. Если size является заниженной оценкой, худшим сценарием будет то, что QVarLengthArray будет немного медленнее.
Единственная цель этой функции — предоставить средство тонкой настройки использования памяти QVarLengthArray. Как правило, вам редко понадобится вызывать эту функцию. Если вы хотите изменить размер массива, вызовите resize().
См. также capacity() и squeeze().
void QVarLengthArray::resize(qsizetype size)
Устанавливает размер массива в size. Если size больше текущего размера, элементы добавляются в конец. Если size меньше текущего размера, элементы удаляются из конца.
Если тип значения является примитивным типом (например, char, int, float) или указателем (например, QWidget *), новые элементы не инициализируются. Для других типов элементы инициализируются значением по умолчанию.
[since 5.10] void QVarLengthArray::shrink_to_fit()
То же, что и squeeze(). Предоставляется для совместимости со STL.
Эта функция была введена в Qt 5.10.
qsizetype QVarLengthArray::size() const
Возвращает количество элементов в массиве.
См. также isEmpty() и resize().
[since 5.1] void QVarLengthArray::squeeze()
Освобождает память, не требуемую для хранения элементов. Если контейнер может уместить своё хранилище в стеке, он освободит выделение памяти в куче и скопирует элементы обратно в стек.
Единственная цель этой функции — предоставить средство тонкой настройки использования памяти QVarLengthArray. Как правило, вам редко понадобится вызывать эту функцию.
Эта функция была введена в Qt 5.1.
См. также reserve(), capacity(), и resize().
T QVarLengthArray::value(qsizetype i) const
Возвращает значение по индексу i.
Если индекс i вне границ, функция возвращает значение по умолчанию. Если вы уверены, что i находится в пределах, вы можете использовать at() вместо этого, что немного быстрее.
См. также at() и operator[]().
T QVarLengthArray::value(qsizetype i, const T &defaultValue) const
Это перегруженная функция.
Если индекс i вне границ, функция возвращает defaultValue.
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator+=(const T &value)
Добавляет value в массив и возвращает ссылку на этот вектор.
См. также append() и operator<<().
[since 5.11] QVarLengthArray<T, Prealloc> &QVarLengthArray::operator+=(T &&value)
Это перегруженная функция.
Эта функция была введена в Qt 5.11.
См. также append() и operator<<().
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator<<(const T &value)
Добавляет value в массив и возвращает ссылку на этот вектор.
См. также append() и operator+=().
[since 5.11] QVarLengthArray<T, Prealloc> &QVarLengthArray::operator<<(T &&value)
Это перегруженная функция.
Эта функция была введена в Qt 5.11.
См. также append() и operator+=().
[since 5.5] QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(std::initializer_list<T> list)
Присваивает значения из list этому массиву и возвращает ссылку на этот массив.
Этот конструктор разрешён только если компилятор поддерживает списки инициализации C++11.
Эта функция была добавлена в Qt 5.5.
T &QVarLengthArray::operator[](qsizetype i)
Возвращает ссылку на элемент с индексом i.
i должен быть корректным индексом массива (т.е., 0 <= i < size()).
const T &QVarLengthArray::operator[](qsizetype i) const
Это перегруженная функция.
Связанные нечленные функции
[since 6.1] template <typename T, qsizetype Prealloc, typename AT> qsizetype erase(QVarLengthArray<T, Prealloc> &array = Prealloc, const AT &t)
Удаляет из массива array все элементы, равные t. Возвращает количество удалённых элементов (если таковые есть).
Примечание: t не должно быть ссылкой на элемент внутри array. Если вы не уверены, что это не так, создайте копию t и вызовите эту функцию с копией.
Эта функция была добавлена в Qt 6.1.
См. также erase_if().
[since 6.1] template <typename T, qsizetype Prealloc, typename Predicate> qsizetype erase_if(QVarLengthArray<T, Prealloc> &array = Prealloc, Predicate pred)
Удаляет из списка array все элементы, для которых предикат pred возвращает true. Возвращает количество удалённых элементов (если таковые есть).
Эта функция была добавлена в Qt 6.1.
См. также erase().
[since 5.14] template <typename T, qsizetype Prealloc> size_t qHash(const QVarLengthArray<T, Prealloc> &key = Prealloc, size_t seed = 0)
Возвращает хэш-значение для key, используя seed для инициализации вычисления.
Эта функция была добавлена в Qt 5.14.
template <typename T, qsizetype Prealloc1, qsizetype Prealloc2> bool operator!=(const QVarLengthArray<T, Prealloc1> &left = Prealloc1, const QVarLengthArray<T, Prealloc2> &right = Prealloc2)
Возвращает true, если два массива, заданные left и right, не равны.
Два массива считаются равными, если они содержат одинаковые значения в том же порядке.
Для этой функции тип значения должен иметь реализацию operator==().
См. также operator==().
[since 5.6] template <typename T, qsizetype Prealloc1, qsizetype Prealloc2> bool operator<(const QVarLengthArray<T, Prealloc1> &lhs = Prealloc1, const QVarLengthArray<T, Prealloc2> &rhs = Prealloc2)
Возвращает true, если массив переменной длины lhs лексикографически меньше rhs; в противном случае возвращает false.
Для этой функции тип значения должен иметь реализацию operator<().
Эта функция была добавлена в Qt 5.6.
[since 5.6] template <typename T, qsizetype Prealloc1, qsizetype Prealloc2> bool operator<=(const QVarLengthArray<T, Prealloc1> &lhs = Prealloc1, const QVarLengthArray<T, Prealloc2> &rhs = Prealloc2)
Возвращает true, если массив переменной длины lhs лексикографически меньше или равен rhs; в противном случае возвращает false.
Для этой функции тип значения должен иметь реализацию operator<().
Эта функция была добавлена в Qt 5.6.
template <typename T, qsizetype Prealloc1, qsizetype Prealloc2> bool operator==(const QVarLengthArray<T, Prealloc1> &left = Prealloc1, const QVarLengthArray<T, Prealloc2> &right = Prealloc2)
Возвращает true, если два массива, заданные left и right, равны.
Два массива считаются равными, если они содержат одинаковые значения в том же порядке.
Для этой функции тип значения должен иметь реализацию operator==().
См. также operator!=().
[since 5.6] template <typename T, qsizetype Prealloc1, qsizetype Prealloc2> bool operator>(const QVarLengthArray<T, Prealloc1> &lhs = Prealloc1, const QVarLengthArray<T, Prealloc2> &rhs = Prealloc2)
Возвращает true, если массив переменной длины lhs лексикографически больше rhs; в противном случае возвращает false.
Для этой функции тип значения должен иметь реализацию operator<().
Эта функция была добавлена в Qt 5.6.
[since 5.6] template <typename T, qsizetype Prealloc1, qsizetype Prealloc2> bool operator>=(const QVarLengthArray<T, Prealloc1> &lhs = Prealloc1, const QVarLengthArray<T, Prealloc2> &rhs = Prealloc2)
Возвращает true, если массив переменной длины lhs лексикографически больше или равен rhs; в противном случае возвращает false.
Для этой функции тип значения должен иметь реализацию operator<().
Эта функция была добавлена в Qt 5.6.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qvarlengtharray.html