Spec-Zone.ru › Qt

Класс QList

шаблон <typename T> class QList

Класс QList — это шаблонный класс, предоставляющий динамический массив. Подробнее...

Заголовок: #include <QList>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Наследуется от:

QBluetoothServiceInfo::Alternative, QBluetoothServiceInfo::Sequence, QByteArrayList, QItemSelection, QMqttUserProperties, QNdefMessage, QPolygon, QPolygonF, QQueue, QSignalSpy, QStack, QStringList, QTestEventList, QVector, QVulkanInfoVector и QXmlStreamAttributes

  • Список всех членов, включая унаследованные
  • Устаревшие члены

Примечание: Все функции в этом классе являются многопоточными.

Общедоступные типы

класс const_iterator
класс iterator
ConstIterator
Iterator
const_pointer
const_reference
const_reverse_iterator
difference_type
parameter_type
pointer
reference
reverse_iterator
rvalue_ref
size_type
value_type

Общедоступные функции

QList(const QList<T> &other)
QList(QList<T> &&other)
QList(InputIterator first, InputIterator last)
QList(std::initializer_list<T> args)
QList(qsizetype size, QList::parameter_type value)
QList(qsizetype size)
QList()
QList<T> & operator=(QList<T> &&other)
QList<T> & operator=(const QList<T> &other)
~QList()
void append(QList::parameter_type value)
void append(QList::rvalue_ref value)
void append(const QList<T> &value)
void append(QList<T> &&value)
QList::const_reference at(qsizetype i) const
QList::reference back()
QList::const_reference back() const
QList::iterator begin()
QList::const_iterator begin() const
qsizetype capacity() const
QList::const_iterator cbegin() const
QList::const_iterator cend() const
void clear()
QList::const_iterator constBegin() const
QList::const_pointer constData() const
QList::const_iterator constEnd() const
const T & constFirst() const
const T & constLast() const
bool contains(const AT &value) const
qsizetype count(const AT &value) const
qsizetype count() const
QList::const_reverse_iterator crbegin() const
QList::const_reverse_iterator crend() const
QList::pointer data()
QList::const_pointer data() const
QList::iterator emplace(qsizetype i, Args &&... args)
QList::iterator emplace(QList::const_iterator before, Args &&... args)
QList::reference emplaceBack(Args &&... args)
QList::reference emplace_back(Args &&... args)
bool empty() const
QList::iterator end()
QList::const_iterator end() const
bool endsWith(QList::parameter_type value) const
QList::iterator erase(QList::const_iterator pos)
QList::iterator erase(QList::const_iterator begin, QList::const_iterator end)
QList<T> & fill(QList::parameter_type value, qsizetype size = -1)
T & first()
const T & first() const
QList<T> first(qsizetype n) const
QList::reference front()
QList::const_reference front() const
qsizetype indexOf(const AT &value, qsizetype from = 0) const
QList::iterator insert(qsizetype i, QList::parameter_type value)
QList::iterator insert(qsizetype i, qsizetype count, QList::parameter_type value)
QList::iterator insert(QList::const_iterator before, QList::parameter_type value)
QList::iterator insert(QList::const_iterator before, qsizetype count, QList::parameter_type value)
QList::iterator insert(QList::const_iterator before, QList::rvalue_ref value)
QList::iterator insert(qsizetype i, QList::rvalue_ref value)
bool isEmpty() const
T & last()
const T & last() const
QList<T> last(qsizetype n) const
qsizetype lastIndexOf(const AT &value, qsizetype from = -1) const
qsizetype length() const
QList<T> mid(qsizetype pos, qsizetype length = -1) const
void move(qsizetype from, qsizetype to)
void pop_back()
void pop_front()
void prepend(QList::rvalue_ref value)
void prepend(QList::parameter_type value)
void push_back(QList::parameter_type value)
void push_back(QList::rvalue_ref value)
void push_front(QList::rvalue_ref value)
void push_front(QList::parameter_type value)
QList::reverse_iterator rbegin()
QList::const_reverse_iterator rbegin() const
void remove(qsizetype i, qsizetype n = 1)
qsizetype removeAll(const AT &t)
void removeAt(qsizetype i)
void removeFirst()
qsizetype removeIf(Predicate pred)
void removeLast()
bool removeOne(const AT &t)
QList::reverse_iterator rend()
QList::const_reverse_iterator rend() const
void replace(qsizetype i, QList::parameter_type value)
void replace(qsizetype i, QList::rvalue_ref value)
void reserve(qsizetype size)
void resize(qsizetype size)
void shrink_to_fit()
qsizetype size() const
QList<T> sliced(qsizetype pos, qsizetype n) const
QList<T> sliced(qsizetype pos) const
void squeeze()
bool startsWith(QList::parameter_type value) const
void swap(QList<T> &other)
void swapItemsAt(qsizetype i, qsizetype j)
T takeAt(qsizetype i)
QList::value_type takeFirst()
QList::value_type takeLast()
T value(qsizetype i) const
T value(qsizetype i, QList::parameter_type defaultValue) const
bool operator!=(const QList<T> &other) const
QList<T> operator+(const QList<T> &other) const
QList<T> operator+(QList<T> &&other) const
QList<T> & operator+=(const QList<T> &other)
QList<T> & operator+=(QList<T> &&other)
QList<T> & operator+=(QList::parameter_type value)
QList<T> & operator+=(QList::rvalue_ref value)
bool operator<(const QList<T> &other) const
QList<T> & operator<<(QList::parameter_type value)
QList<T> & operator<<(const QList<T> &other)
QList<T> & operator<<(QList<T> &&other)
QList<T> & operator<<(QList::rvalue_ref value)
bool operator<=(const QList<T> &other) const
QList<T> & operator=(std::initializer_list<T> args)
bool operator==(const QList<T> &other) const
bool operator>(const QList<T> &other) const
bool operator>=(const QList<T> &other) const
QList::reference operator[](qsizetype i)
QList::const_reference operator[](qsizetype i) const

Связанные нечлены

qsizetype erase(QList<T> &list, const AT &t)
qsizetype erase_if(QList<T> &list, Predicate pred)
size_t qHash(const QList<T> &key, size_t seed = 0)
QDataStream & operator<<(QDataStream &out, const QList<T> &list)
QDataStream & operator>>(QDataStream &in, QList<T> &list)

Подробное описание

QList<T> — один из универсальных классов контейнеров Qt. Он хранит элементы в смежных ячейках памяти и обеспечивает быстрый доступ по индексу. QVector<T> раньше был отдельным классом в Qt 5, но теперь является простым псевдонимом для QList.

QList<T> и QVarLengthArray<T> предоставляют аналогичные API и функциональность. Они часто взаимозаменяемы, но существуют последствия для производительности. Вот обзор вариантов использования:

  • QList следует использовать по умолчанию.
  • QVarLengthArray предоставляет массив, который резервирует место в стеке, но может динамически расти в куче, если это необходимо. Хорошо подходит для кратковременных контейнеров, которые обычно невелики.
  • Если вам нужна настоящая связанный список, который гарантирует постоянное время вставки в середину списка и использует итераторы для элементов, а не индексы, используйте std::list.

Примечание: QList и QVarLengthArray оба гарантируют совместимость с C-массивами.

Примечание: QList в Qt 5 не всегда имел совместимость с C-массивами, и мы часто рекомендовали использовать QVector для более предсказуемой производительности. Это больше не актуально в Qt 6, где оба класса теперь разделяют реализацию и могут использоваться взаимозаменяемо.

Вот пример QList, хранящий целые числа, и QList, хранящий значения QString:

QList<int> integerList;
QList<QString> stringList;

QList хранит свои элементы в массиве непрерывной памяти. Обычно списки создаются с начальным размером. Например, следующий код создаёт QList с 200 элементами:

QList<QString> list(200);

Элементы автоматически инициализируются с значением по умолчанию. Если вы хотите инициализировать список другим значением, передайте это значение вторым аргументом в конструктор:

QList<QString> list(200, "Pass");

Вы также можете в любое время вызвать fill() для заполнения списка значением.

QList использует нумерацию с нуля, как и C++ массивы. Для доступа к элементу по определенному индексу можно использовать оператор[](). Для неконстантных списков оператор[]() возвращает ссылку на элемент, который можно использовать в левой части оператора присваивания:

if (list[0] == "Liz")
    list[0] = "Elizabeth";

Для только для чтения доступа альтернативный синтаксис — использовать at():

for (qsizetype i = 0; i < list.size(); ++i) {
    if (list.at(i) == "Alfonso")
        cout << "Found Alfonso at position " << i << Qt::endl;
}

at() может быть быстрее, чем оператор[](), потому что он никогда не вызывает глубокое копирование.

Другой способ доступа к данным в QList — вызвать data(). Функция возвращает указатель на первый элемент в списке. Вы можете использовать указатель для прямого доступа и изменения хранящихся в списке элементов. Указатель также полезен, если вам нужно передать QList в функцию, принимающую обычный C++ массив.

Если вы хотите найти все вхождения определенного значения в списке, используйте indexOf() или lastIndexOf(). Первый ищет вперёд, начиная с заданного индекса, второй — назад. Оба возвращают индекс соответствующего элемента, если он найден; в противном случае возвращают -1. Например:

qsizetype i = list.indexOf("Harumi");
if (i != -1)
    cout << "First occurrence of Harumi is at position " << i << Qt::endl;

Если вам просто нужно проверить, содержит ли список определенное значение, используйте contains(). Если вы хотите узнать, сколько раз встречается определённое значение в списке, используйте count().

QList предоставляет эти базовые функции для добавления, перемещения и удаления элементов: insert(), replace(), remove(), prepend(), append(). За исключением append(), prepend() и replace(), эти функции могут быть медленными (линейное время) для больших списков, так как они требуют перемещения многих элементов в списке на одну позицию в памяти. Если вам нужен класс контейнера, который обеспечивает быструю вставку/удаление в середине, используйте std::list.

В отличие от обычных C++ массивов, размер QList можно изменять в любое время, вызвав resize(). Если новый размер больше старого, QList, возможно, придётся перевыделить весь список. QList пытается уменьшить количество перевыделений, предварительно выделяя до удвоенного объёма памяти по сравнению с фактическими данными.

Если вы постепенно создаёте QList и заранее знаете приблизительное количество элементов, вы можете вызвать reserve(), попросив QList предварительно выделить определённый объём памяти. Также вы можете вызвать capacity() для получения информации о фактически выделенной памяти QList.

Обратите внимание, что использование неконстантных операторов и функций может привести к тому, что QList сделает глубокую копию данных из-за неявного совместного использования.

Тип значения QList должен быть типом данных, допускающим присваивание. Это охватывает большинство типов данных, которые обычно используются, но компилятор не позволит вам, например, хранить QWidget как значение; вместо этого храните QWidget *. Некоторые функции имеют дополнительные требования; например, indexOf() и lastIndexOf() ожидают, что тип значения поддерживает operator==(). Эти требования документированы для каждой функции.

Как и другие классы контейнеров, QList предоставляет итераторы в стиле Java (QListIterator и QMutableListIterator) и итераторы в стиле STL (QList::const_iterator и QList::iterator). На практике итераторы удобны при работе с универсальными алгоритмами, предоставляемыми Qt и стандартной библиотекой C++. Итераторы в стиле Java предоставляются для совместимости с прошлыми версиями, отдавайте предпочтение итераторам в стиле STL при написании C++ кода.

Примечание: Итераторы над QList, и ссылки на отдельные элементы внутри него, не могут гарантировать сохранение работоспособности при вызове любых неконстантных методов QList. Доступ к такому итератору или ссылке после вызова неконстантного метода приводит к неопределённому поведению. Если требуется стабильность для работы с итераторами, используйте индексы вместо итераторов, так как они не привязаны к внутреннему состоянию QList и, следовательно, не становятся недействительными.

Помимо QList, Qt также предоставляет QVarLengthArray, очень низкоуровневый класс с небольшим функционалом, оптимизированный для скорости.

Дополнительная информация об использовании контейнеров Qt

Для подробного обсуждения сравнения контейнеров Qt друг с другом и с контейнерами STL см. Понимание контейнеров Qt.

Максимальный размер и условия исчерпания памяти

Максимальный размер QList зависит от архитектуры. Большинство 64-битных систем могут выделять более 2 ГБ памяти, с типичным пределом в 2^63 байта. Фактическое значение также зависит от накладных расходов на управление блоком данных. В результате вы можете ожидать максимальный размер 2 ГБ минус накладные расходы на 32-битных платформах и 2^63 байта минус накладные расходы на 64-битных платформах. Количество элементов, которые могут быть сохранены в QList, равно максимальному размеру, делённому на размер сохранённого элемента.

При сбое выделения памяти QList использует макрос Q_CHECK_PTR, который вызывает исключение std::bad_alloc если приложение компилируется с поддержкой исключений. Если исключения отключены, исчерпание памяти — это неопределённое поведение.

Обратите внимание, что операционная система может наложить дополнительные ограничения на приложения, удерживающие много выделенной памяти, особенно большие непрерывные блоки. Такие соображения, конфигурация такого поведения или любые смягчающие факторы выходят за рамки API Qt.

Документация типов членов

[alias] QList::ConstIterator

Синоним в стиле Qt для QList::const_iterator.

[alias] QList::Iterator

Синоним в стиле Qt для QList::iterator.

[alias] QList::const_pointer

Предоставляется для совместимости со STL.

[alias] QList::const_reference

Предоставляется для совместимости со STL.

[alias, since 5.6] QList::const_reverse_iterator

QList::const_reverse_iterator предоставляет итератор обратного перечисления const в стиле STL для QList.

Предупреждение: Итераторы в неявно совместно используемых контейнерах не работают точно как итераторы STL. Следует избегать копирования контейнера, пока активны итераторы на этом контейнере. Для получения дополнительной информации см. Проблема итераторов при неявном совместном использовании.

Предупреждение: Итераторы становятся недействительными при изменении QList. Учтите, что все итераторы по умолчанию становятся недействительными. Исключения из этого правила документированы явно.

Этот typedef был введён в Qt 5.6.

См. также QList::rbegin(), QList::rend(), QList::reverse_iterator и QList::const_iterator.

[alias] QList::difference_type

Предоставляется для совместимости со STL.

[alias] QList::parameter_type

[alias] QList::pointer

Предоставлено для совместимости со STL.

[alias] QList::reference

Предоставлено для совместимости со STL.

[alias, since 5.6] QList::reverse_iterator

Тип QList::reverse_iterator предоставляет итератор обратного прохода (не константный) в стиле STL для QList.

Предупреждение: Итераторы неявно-совмещенных контейнеров не работают точно так же, как итераторы STL. Следует избегать копирования контейнера, пока итераторы активны в этом контейнере. Для получения дополнительной информации, прочтите проблему итераторов при неявном совместном использовании.

Предупреждение: Итераторы становятся недействительными при изменении QList. Учтите, что все итераторы по умолчанию считаются недействительными. Исключение из этого правила документировано явно.

Этот тип данных был добавлен в Qt 5.6.

См. также QList::rbegin(), QList::rend(), QList::const_reverse_iterator и QList::iterator.

[alias] QList::rvalue_ref

[alias] QList::size_type

Предоставлено для совместимости со STL.

[alias] QList::value_type

Предоставлено для совместимости со STL.

Документация по функциям-членам

void QList::push_front(QList::parameter_type value)

void QList::push_front(QList::rvalue_ref value)

Эта функция предоставлена для совместимости со STL. Она эквивалентна prepend(value).

void QList::replace(qsizetype i, QList::parameter_type value)

void QList::replace(qsizetype i, QList::rvalue_ref value)

Заменяет элемент по индексу i на value.

i должен быть допустимым индексом в списке (т.е., 0 <= i < size()).

См. также operator[]() и remove().

QList::iterator QList::insert(QList::const_iterator before, QList::parameter_type value)

QList::iterator QList::insert(QList::const_iterator before, QList::rvalue_ref value)

Это перегруженная функция.

Вставляет value перед элементом, на который указывает итератор before. Возвращает итератор, указывающий на вставленный элемент.

QList::iterator QList::insert(qsizetype i, QList::parameter_type value)

QList::iterator QList::insert(qsizetype i, QList::rvalue_ref value)

Вставляет value по индексу i в список. Если i равно 0, значение добавляется в начало списка. Если i равно size(), значение добавляется в конец списка.

Пример:

QList<QString> list;
list << "alpha" << "beta" << "delta";
list.insert(2, "gamma");
// list: ["alpha", "beta", "gamma", "delta"]

Для больших списков эта операция может быть медленной (линейное время), так как требует перемещения всех элементов с индексами i и выше на одну позицию дальше в памяти. Если вам нужен класс контейнера с быстрой функцией insert(), используйте std::list вместо него. В противном случае предпочтительнее использовать QList.

См. также append(), prepend() и remove().

template <typename Args> QList::reference QList::emplaceBack(Args &&... args)

template <typename Args> QList::reference QList::emplace_back(Args &&... args)

Добавляет новый элемент в конец контейнера. Новый элемент создается на месте с использованием args в качестве аргументов для его построения.

Возвращает ссылку на новый элемент.

Пример:

QList<QString> list{"one", "two"};
list.emplaceBack(3, 'a');
qDebug() << list;
// list: ["one", "two", "aaa"]

Также можно получить доступ к вновь созданному объекту, используя возвращаемую ссылку:

QList<QString> list;
auto &ref = list.emplaceBack();
ref = "one";
// list: ["one"]

Это то же самое, что list.emplace(list.size(), args).

См. также emplace.

void QList::prepend(QList::parameter_type value)

void QList::prepend(QList::rvalue_ref value)

Вставляет value в начало списка.

Пример:

QList<QString> list;
list.prepend("one");
list.prepend("two");
list.prepend("three");
// list: ["three", "two", "one"]

Это то же самое, что list.insert(0, value).

Обычно эта операция относительно быстрая (амортизированное постоянное время). QList может выделять дополнительную память в начале данных списка и расти в этом направлении без перераспределения или перемещения данных при каждой операции. Однако, если вам нужен класс контейнера с гарантией постоянного времени для prepend, используйте std::list. В противном случае предпочтительнее QList.

См. также append() и insert().

[default] QList::QList(const QList<T> &other)

Создаёт копию other.

Эта операция выполняется за постоянное время, так как QList неявно-разделяемый. Это делает возврат QList из функции очень быстрым. Если изменён общий экземпляр, он будет скопирован (copy-on-write), что занимает линейное время.

См. также operator=().

[default, since 5.2] QList::QList(QList<T> &&other)

Перемещающее создание экземпляра QList, делая его указывающим на тот же объект, на который указывал other.

Эта функция была добавлена в Qt 5.2.

[since 5.14] template <typename InputIterator> QList::QList(InputIterator first, InputIterator last)

Создаёт список с содержимым в диапазоне итераторов [first, last).

Тип значения InputIterator должен быть преобразуем в T.

Эта функция была добавлена в Qt 5.14.

QList::QList(std::initializer_list<T> args)

Создаёт список из переданной std::initializer_list args.

QList::QList(qsizetype size, QList::parameter_type value)

Создаёт список с начальным размером size элементов. Каждый элемент инициализируется значением value.

См. также resize() и fill().

QList::QList(qsizetype size)

Создаёт список с начальным размером size элементов.

Элементы инициализируются значением по умолчанию.

См. также resize().

QList::QList()

Создаёт пустой список.

См. также resize().

[default, since 5.2] QList<T> &QList::operator=(QList<T> &&other)

Перемещающее присваивание other этому экземпляру QList.

Эта функция была добавлена в Qt 5.2.

[default] QList<T> &QList::operator=(const QList<T> &other)

Присваивает other этому списку и возвращает ссылку на этот список.

[default] QList::~QList()

Удаляет список.

void QList::append(QList::parameter_type value)

Вставляет value в конец списка.

Пример:

QList<QString> list;
list.append("one");
list.append("two");
QString three = "three";
list.append(three);
// list: ["one", "two", "three"]
// three: "three"

Это то же самое, что вызов resize(size() + 1) и присваивание value новому последнему элементу в списке.

Эта операция относительно быстрая, так как QList обычно выделяет больше памяти, чем необходимо, поэтому может расти без перераспределения всего списка каждый раз.

См. также operator<<(), prepend() и insert().

[since 5.6] void QList::append(QList::rvalue_ref value)

Это перегруженный метод.

Пример:

QList<QString> list;
list.append("one");
list.append("two");
QString three = "three";
list.append(std::move(three));
// list: ["one", "two", "three"]
// three: ""

Этот метод был представлен в Qt 5.6.

[since 5.5] void QList::append(const QList<T> &value)

Это перегруженный метод.

Добавляет элементы из списка value в конец этого списка.

Этот метод был представлен в Qt 5.5.

См. также operator<<() и operator+=().

[since 6.0] void QList::append(QList<T> &&value)

Это перегруженный метод.

Перемещает элементы из списка value в конец этого списка.

Этот метод был представлен в Qt 6.0.

См. также operator<<() и operator+=().

QList::const_reference QList::at(qsizetype i) const

Возвращает элемент по индексу i в списке.

i должен быть допустимым индексом в списке (т.е., 0 <= i < size()).

См. также value() и operator[]().

QList::reference QList::back()

Этот метод предоставляется для совместимости со STL. Он эквивалентен last().

QList::const_reference QList::back() const

Это перегруженный метод.

QList::iterator QList::begin()

Возвращает итератор STL, указывающий на первый элемент в списке.

Предупреждение: Возвращённый итератор становится недействительным при отсоединении или при изменении списка QList.

См. также constBegin() и end().

QList::const_iterator QList::begin() const

Это перегруженный метод.

qsizetype QList::capacity() const

Возвращает максимальное количество элементов, которое может быть хранимо в списке без принудительной переаллокации.

Единственная цель этого метода — предоставить средство для точной настройки использования памяти QList. Как правило, вам редко потребуется вызывать этот метод. Если вы хотите узнать, сколько элементов находится в списке, вызовите size().

Примечание: Статически выделенный список сообщит о ёмкости 0, даже если он не пустой.

Предупреждение: Положение свободного места в блоке выделенной памяти не определено. Другими словами, вы не должны предполагать, что свободная память всегда находится в конце списка. Вы можете вызвать reserve(), чтобы гарантировать, что достаточно места в конце.

См. также reserve() и squeeze().

[since 5.0] QList::const_iterator QList::cbegin() const

Возвращает постоянный итератор STL, указывающий на первый элемент в списке.

Предупреждение: Возвращённый итератор становится недействительным при отсоединении или при изменении списка QList.

Этот метод был представлен в Qt 5.0.

См. также begin() и cend().

[since 5.0] QList::const_iterator QList::cend() const

Возвращает постоянный итератор STL, указывающий сразу после последнего элемента в списке.

Предупреждение: Возвращённый итератор становится недействительным при отсоединении или при изменении списка QList.

Этот метод был представлен в Qt 5.0.

См. также cbegin() и end().

void QList::clear()

Удаляет все элементы из списка.

Примечание: До Qt 5.6 это также освобождало память, используемую списком. С Qt 5.7 ёмкость сохраняется. Чтобы освободить всю ёмкость, выполните swap со списком, созданным по умолчанию:

QList<T> l ...;
QList<T>().swap(l);
Q_ASSERT(l.capacity() == 0);

или вызовите squeeze().

См. также squeeze().

QList::const_iterator QList::constBegin() const

Возвращает постоянный итератор STL, указывающий на первый элемент в списке.

Предупреждение: Возвращённый итератор становится недействительным при отсоединении или при изменении списка QList.

См. также begin() и constEnd().

QList::const_pointer QList::constData() const

Возвращает постоянный указатель на данные, хранящиеся в списке. Указатель можно использовать для доступа к элементам в списке.

Предупреждение: Указатель становится недействительным при отсоединении или при изменении списка QList.

Этот метод в основном полезен для передачи списка функции, которая принимает обычный массив C++.

См. также data() и operator[]().

QList::const_iterator QList::constEnd() const

Возвращает постоянный итератор STL, указывающий сразу после последнего элемента в списке.

Предупреждение: Возвращённый итератор становится недействительным при отсоединении или при изменении списка QList.

См. также constBegin() и end().

[since 5.6] const T &QList::constFirst() const

Возвращает постоянную ссылку на первый элемент в списке. Этот метод предполагает, что список не пуст.

Этот метод был представлен в Qt 5.6.

См. также constLast(), isEmpty(), и first().

[since 5.6] const T &QList::constLast() const

Возвращает постоянную ссылку на последний элемент в списке. Этот метод предполагает, что список не пуст.

Этот метод был представлен в Qt 5.6.

См. также constFirst(), isEmpty(), и last().

template <typename AT> bool QList::contains(const AT &value) const

Возвращает true , если список содержит value; в противном случае возвращает false.

Этот метод требует, чтобы тип значения имел реализацию operator==().

См. также indexOf() и count().

template <typename AT> qsizetype QList::count(const AT &value) const

Возвращает количество вхождений value в списке.

Этот метод требует, чтобы тип значения имел реализацию operator==().

См. также contains() и indexOf().

qsizetype QList::count() const

Это перегруженный метод.

То же самое, что и size().

[since 5.6] QList::const_reverse_iterator QList::crbegin() const

Возвращает постоянный реверсивный итератор STL, указывающий на первый элемент в списке в обратном порядке.

Предупреждение: Возвращённый итератор становится недействительным при отсоединении или при изменении списка QList.

Этот метод был представлен в Qt 5.6.

См. также begin(), rbegin(), и rend().

[since 5.6] QList::const_reverse_iterator QList::crend() const

Возвращает постоянный реверсивный итератор STL, указывающий сразу после последнего элемента в списке в обратном порядке.

Предупреждение: Возвращённый итератор становится недействительным при отсоединении или при изменении списка QList.

Этот метод был представлен в Qt 5.6.

См. также end(), rend(), и rbegin().

QList::pointer QList::data()

Возвращает указатель на данные, хранящиеся в списке. Указатель можно использовать для доступа и изменения элементов в списке.

Пример:

QList<int> list(10);
int *data = list.data();
for (qsizetype i = 0; i < 10; ++i)
    data[i] = 2 * i;

Предупреждение: Указатель становится недействительным при отсоединении или при изменении списка QList.

Этот метод в основном полезен для передачи списка функции, которая принимает обычный массив C++.

См. также constData() и operator[]().

QList::const_pointer QList::data() const

Это перегруженный метод.

template <typename Args> QList::iterator QList::emplace(qsizetype i, Args &&... args)

Расширяет контейнер, вставляя новый элемент в позицию i. Этот новый элемент создаётся на месте с использованием args в качестве аргументов для его создания.

Возвращает итератор на новый элемент.

Пример:

QList<QString> list{"a", "ccc"};
list.emplace(1, 2, 'b');
// list: ["a", "bb", "ccc"]

Примечание: Гарантируется, что элемент будет создан на месте в начале, но после этого он может быть скопирован или перемещен в нужное положение.

См. также emplaceBack.

template <typename Args> QList::iterator QList::emplace(QList::const_iterator before, Args &&... args)

Это перегруженный метод.

Создаёт новый элемент перед элементом, на который указывает итератор before. Новый элемент создаётся на месте с использованием args в качестве аргументов для его создания.

Возвращает итератор на новый элемент.

bool QList::empty() const

Эта функция предоставляется для совместимости со STL. Она эквивалентна isEmpty(), возвращая true если список пустой; в противном случае возвращает false.

QList::iterator QList::end()

Возвращает итератор STL-стиля, указывающий сразу после последнего элемента в списке.

Предупреждение: Возвращаемый итератор становится недействительным при отделении или при изменении QList.

См. также begin() и constEnd().

QList::const_iterator QList::end() const

Это перегруженный метод.

bool QList::endsWith(QList::parameter_type value) const

Возвращает true если этот список не пустой и его последний элемент равен value; в противном случае возвращает false.

См. также isEmpty() и last().

QList::iterator QList::erase(QList::const_iterator pos)

Удаляет элемент, на который указывает итератор pos из списка и возвращает итератор на следующий элемент в списке (который может быть end()).

Удаление элемента сохранит емкость списка и не уменьшит количество выделенной памяти. Чтобы освободить дополнительную емкость и освободить как можно больше памяти, вызовите squeeze().

Примечание: Когда QList не является неявным общим, эта функция делает недействительными только итераторы, расположенные на позиции или после указанной позиции.

См. также insert() и remove().

QList::iterator QList::erase(QList::const_iterator begin, QList::const_iterator end)

Это перегруженный метод.

Удаляет все элементы от begin до (но не включая) end. Возвращает итератор того же элемента, на который ссылался end до вызова.

Удаление элемента сохранит емкость списка и не уменьшит количество выделенной памяти. Чтобы освободить дополнительную емкость и освободить как можно больше памяти, вызовите squeeze().

Примечание: Когда QList не является неявным общим, эта функция делает недействительными только итераторы, расположенные на позиции или после указанной позиции.

QList<T> &QList::fill(QList::parameter_type value, qsizetype size = -1)

Присваивает value всем элементам в списке. Если size отличается от -1 (по умолчанию), размер списка предварительно изменяется на size.

Пример:

QList<QString> list(3);
list.fill("Yes");
// list: ["Yes", "Yes", "Yes"]

list.fill("oh", 5);
// list: ["oh", "oh", "oh", "oh", "oh"]

См. также resize().

T &QList::first()

Возвращает ссылку на первый элемент в списке. Эта функция предполагает, что список не пуст.

См. также last(), isEmpty() и constFirst().

const T &QList::first() const

Это перегруженный метод.

[since 6.0] QList<T> QList::first(qsizetype n) const

Возвращает подсписок, содержащий первые n элементов этого списка.

Примечание: Поведение не определено, когда n < 0 или n > size().

Эта функция была добавлена в Qt 6.0.

См. также last() и sliced().

QList::reference QList::front()

Эта функция предоставляется для совместимости со STL. Она эквивалентна first().

QList::const_reference QList::front() const

Это перегруженный метод.

template <typename AT> qsizetype QList::indexOf(const AT &value, qsizetype from = 0) const

Возвращает позицию индекса первого вхождения value в списке, выполняя поиск вперёд с позиции индекса from. Возвращает -1, если ни один элемент не соответствует.

Пример:

QList<QString> list;
list << "A" << "B" << "C" << "B" << "A";
list.indexOf("B");            // returns 1
list.indexOf("B", 1);         // returns 1
list.indexOf("B", 2);         // returns 3
list.indexOf("X");            // returns -1

Эта функция требует, чтобы тип значения имел реализацию operator==().

См. также lastIndexOf() и contains().

QList::iterator QList::insert(qsizetype i, qsizetype count, QList::parameter_type value)

Это перегруженный метод.

Вставляет count копий value на позицию индекса i в списке.

Пример:

QList<double> list;
list << 2.718 << 1.442 << 0.4342;
list.insert(1, 3, 9.9);
// list: [2.718, 9.9, 9.9, 9.9, 1.442, 0.4342]

QList::iterator QList::insert(QList::const_iterator before, qsizetype count, QList::parameter_type value)

Вставляет count копий value перед элементом, на который указывает итератор before. Возвращает итератор, указывающий на первый из вставленных элементов.

bool QList::isEmpty() const

Возвращает true если размер списка равен 0; в противном случае возвращает false.

См. также size() и resize().

T &QList::last()

Возвращает ссылку на последний элемент в списке. Эта функция предполагает, что список не пуст.

См. также first(), isEmpty() и constLast().

const T &QList::last() const

Это перегруженный метод.

[since 6.0] QList<T> QList::last(qsizetype n) const

Возвращает подсписок, содержащий последние n элементов этого списка.

Примечание: Поведение не определено, когда n < 0 или n > size().

Эта функция была добавлена в Qt 6.0.

См. также first() и sliced().

template <typename AT> qsizetype QList::lastIndexOf(const AT &value, qsizetype from = -1) const

Возвращает позицию индекса последнего вхождения значения value в списке, выполняя поиск назад с позиции индекса from. Если from равно -1 (по умолчанию), поиск начинается с последнего элемента. Возвращает -1, если ни один элемент не соответствует.

Пример:

QList<QString> list;
list << "A" << "B" << "C" << "B" << "A";
list.lastIndexOf("B");        // returns 3
list.lastIndexOf("B", 3);     // returns 3
list.lastIndexOf("B", 2);     // returns 1
list.lastIndexOf("X");        // returns -1

Эта функция требует, чтобы тип значения имел реализацию operator==().

См. также indexOf().

[since 5.2] qsizetype QList::length() const

То же самое, что и size() и count().

Эта функция была добавлена в Qt 5.2.

См. также size() и count().

QList<T> QList::mid(qsizetype pos, qsizetype length = -1) const

Возвращает подсписок, содержащий элементы из этого списка, начиная с позиции pos. Если length равно -1 (по умолчанию), включаются все элементы после pos; в противном случае включаются length элементов (или все оставшиеся элементы, если их меньше, чем length).

[since 5.6] void QList::move(qsizetype from, qsizetype to)

Перемещает элемент с индексом from на индекс to.

Эта функция была добавлена в Qt 5.6.

void QList::pop_back()

Эта функция предоставляется для совместимости со STL. Она эквивалентна removeLast().

void QList::pop_front()

Эта функция предоставляется для совместимости со STL. Она эквивалентна removeFirst().

void QList::push_back(QList::parameter_type value)

Эта функция предоставлена для совместимости со STL. Она эквивалентна append(value).

[since 5.6] void QList::push_back(QList::rvalue_ref value)

Это перегруженная функция.

Эта функция была введена в Qt 5.6.

[since 5.6] QList::reverse_iterator QList::rbegin()

Возвращает обратный итератор STL, указывающий на первый элемент в списке в обратном порядке.

Предупреждение: Возвращаемый итератор становится недействительным при отсоединении или при модификации списка QList.

Эта функция была введена в Qt 5.6.

См. также begin(), crbegin() и rend().

[since 5.6] QList::const_reverse_iterator QList::rbegin() const

Это перегруженная функция.

Эта функция была введена в Qt 5.6.

void QList::remove(qsizetype i, qsizetype n = 1)

Удаляет n элементов из списка, начиная с индекса i.

Удаление элементов сохранит емкость списка и не уменьшит выделенную память. Чтобы освободить избыточную емкость и освободить как можно больше памяти, вызовите squeeze().

Примечание: Когда QList не является неявно совместно используемым, эта функция делает недействительными только итераторы, расположенные на указанной позиции или после неё.

См. также insert(), replace() и fill().

[since 5.4] template <typename AT> qsizetype QList::removeAll(const AT &t)

Удаляет все элементы, равные t, из списка. Возвращает количество удалённых элементов, если таковые имеются.

Удаление элементов сохранит емкость списка и не уменьшит выделенную память. Чтобы освободить избыточную емкость и освободить как можно больше памяти, вызовите squeeze().

Эта функция была введена в Qt 5.4.

См. также removeOne().

[since 5.2] void QList::removeAt(qsizetype i)

Удаляет элемент с индексом i. Эквивалентно

remove(i);

Удаление элементов сохранит емкость списка и не уменьшит выделенную память. Чтобы освободить избыточную емкость и освободить как можно больше памяти, вызовите squeeze().

Примечание: Когда QList не является неявно совместно используемым, эта функция делает недействительными только итераторы, расположенные на указанной позиции или после неё.

Эта функция была введена в Qt 5.2.

См. также remove().

[since 5.1] void QList::removeFirst()

Удаляет первый элемент в списке. Вызов этой функции эквивалентен вызову remove(0). Список не должен быть пустым. Если список может быть пустым, вызовите isEmpty() перед вызовом этой функции.

Удаление элементов сохранит емкость списка и не уменьшит выделенную память. Чтобы освободить избыточную емкость и освободить как можно больше памяти, вызовите squeeze().

Эта функция была введена в Qt 5.1.

См. также remove(), takeFirst() и isEmpty().

[since 6.1] template <typename Predicate> qsizetype QList::removeIf(Predicate pred)

Удаляет все элементы, для которых предикат pred возвращает true, из списка. Возвращает количество удалённых элементов, если таковые имеются.

Эта функция была введена в Qt 6.1.

См. также removeAll().

[since 5.1] void QList::removeLast()

Удаляет последний элемент в списке. Вызов этой функции эквивалентен вызову remove(size() - 1). Список не должен быть пустым. Если список может быть пустым, вызовите isEmpty() перед вызовом этой функции.

Удаление элементов сохранит емкость списка и не уменьшит выделенную память. Чтобы освободить избыточную емкость и освободить как можно больше памяти, вызовите squeeze().

Эта функция была введена в Qt 5.1.

См. также remove(), takeLast(), removeFirst() и isEmpty().

[since 5.4] template <typename AT> bool QList::removeOne(const AT &t)

Удаляет первый элемент, равный t, из списка. Возвращает значение, указывающее, был ли удалён элемент.

Удаление элементов сохранит емкость списка и не уменьшит выделенную память. Чтобы освободить избыточную емкость и освободить как можно больше памяти, вызовите squeeze().

Эта функция была введена в Qt 5.4.

См. также removeAll().

[since 5.6] QList::reverse_iterator QList::rend()

Возвращает обратный итератор STL, указывающий на позицию сразу после последнего элемента в списке в обратном порядке.

Предупреждение: Возвращаемый итератор становится недействительным при отсоединении или при модификации списка QList.

Эта функция была введена в Qt 5.6.

См. также end(), crend() и rbegin().

[since 5.6] QList::const_reverse_iterator QList::rend() const

Это перегруженная функция.

Эта функция была введена в Qt 5.6.

void QList::reserve(qsizetype size)

Попытка выделить память для как минимум size элементов.

Если заранее известно, какой будет размер списка, вы должны вызвать эту функцию, чтобы предотвратить повторные выделения и фрагментацию памяти. Если размер списка часто изменяется, вы также, вероятно, получите лучшую производительность.

Если вы не уверены в том, сколько места потребуется, лучше использовать верхнюю границу в качестве size или высокую оценку наиболее вероятного размера, если строгая верхняя граница будет намного больше этого. Если size является недооценкой, список будет расти по мере необходимости, когда будет превышен зарезервированный размер, что может привести к выделению большему, чем ваша наилучшая оценка, и замедлит операцию, которая её вызовет.

Предупреждение: reserve() резервирует память, но не изменяет размер списка. Обращение к данным за пределами текущего конца списка является неопределённым поведением. Если вам нужно получить доступ к памяти за пределами текущего конца списка, используйте resize().

См. также squeeze(), capacity() и resize().

void QList::resize(qsizetype size)

Устанавливает размер списка в size. Если size больше текущего размера, элементы добавляются в конец; новые элементы инициализируются значением по умолчанию. Если size меньше текущего размера, элементы удаляются с конца.

Начиная с Qt 5.6, resize() больше не уменьшает емкость. Чтобы освободить избыточную емкость, используйте squeeze().

См. также size().

[since 5.10] void QList::shrink_to_fit()

Эта функция предоставлена для совместимости со STL. Она эквивалентна squeeze().

Эта функция была введена в Qt 5.10.

qsizetype QList::size() const

Возвращает количество элементов в списке.

См. также isEmpty() и resize().

[since 6.0] QList<T> QList::sliced(qsizetype pos, qsizetype n) const

Возвращает подсписок, содержащий n элементов этого списка, начиная с позиции pos.

Примечание: Поведение неопределённо, когда pos < 0, n < 0 или pos + n > size().

Эта функция была введена в Qt 6.0.

См. также first() и last().

[since 6.0] QList<T> QList::sliced(qsizetype pos) const

Это перегруженная функция.

Возвращает подсписок, содержащий элементы этого списка, начиная с позиции pos и до конца.

Примечание: Поведение неопределённо, когда pos < 0 или pos > size().

Эта функция была введена в Qt 6.0.

См. также first() и last().

void QList::squeeze()

Освобождает память, не необходимую для хранения элементов.

Единственная цель этой функции — предоставить способ тонкой настройки использования памяти QList. Как правило, вам редко придётся вызывать эту функцию.

См. также reserve() и capacity().

bool QList::startsWith(QList::parameter_type value) const

Возвращает true если этот список не пуст и его первый элемент равен value; в противном случае возвращает false.

См. также isEmpty() и first().

void QList::swap(QList<T> &other)

Меняет местами список other с этим списком. Эта операция очень быстрая и никогда не терпит неудачу.

void QList::swapItemsAt(qsizetype i, qsizetype j)

Меняет местами элемент с индексом i и элемент с индексом j. Эта функция предполагает, что i и j не меньше 0, но меньше size(). Чтобы избежать ошибок, проверьте, что i и j не меньше 0 и меньше size().

[since 5.2] T QList::takeAt(qsizetype i)

Удаляет элемент с индексом i и возвращает его.

Эквивалентно

T t = at(i);
remove(i);
return t;

Примечание: Когда QList не является неявным общим, эта функция делает недействительными только итераторы на позициях, равных или следующих за указанной позицией.

Эта функция была добавлена в Qt 5.2.

См. также takeFirst() и takeLast().

[since 5.1] QList::value_type QList::takeFirst()

Удаляет первый элемент списка и возвращает его. Функция предполагает, что список не пустой. Чтобы избежать ошибок, вызовите isEmpty() перед вызовом этой функции.

Эта функция была добавлена в Qt 5.1.

См. также takeLast() и removeFirst().

[since 5.1] QList::value_type QList::takeLast()

Удаляет последний элемент списка и возвращает его. Функция предполагает, что список не пустой. Чтобы избежать ошибок, вызовите isEmpty() перед вызовом этой функции.

Если вам не нужно значение возвращаемое функцией, removeLast() будет более эффективным.

Эта функция была добавлена в Qt 5.1.

См. также takeFirst() и removeLast().

T QList::value(qsizetype i) const

Возвращает значение с индексом i в списке.

Если индекс i вне диапазона, функция возвращает значение по умолчанию. Если вы уверены, что i находится в пределах диапазона, используйте at(), который немного быстрее.

См. также at() и operator[]().

T QList::value(qsizetype i, QList::parameter_type defaultValue) const

Это перегруженная функция.

Если индекс i вне диапазона, функция возвращает defaultValue.

bool QList::operator!=(const QList<T> &other) const

Возвращает true если other не равно этому списку; в противном случае возвращает false.

Два списка считаются равными, если они содержат одинаковые значения в том же порядке.

Для этой функции требуется, чтобы тип значения имел реализацию operator==().

См. также operator==().

QList<T> QList::operator+(const QList<T> &other) const

Возвращает список, содержащий все элементы этого списка, за которым следуют все элементы списка other.

См. также operator+=().

[since 6.0] QList<T> QList::operator+(QList<T> &&other) const

Это перегруженная функция.

Эта функция была добавлена в Qt 6.0.

См. также operator+=().

QList<T> &QList::operator+=(const QList<T> &other)

Добавляет элементы списка other к этому списку и возвращает ссылку на этот список.

См. также operator+() и append().

[since 6.0] QList<T> &QList::operator+=(QList<T> &&other)

Это перегруженная функция.

Эта функция была добавлена в Qt 6.0.

См. также operator+() и append().

QList<T> &QList::operator+=(QList::parameter_type value)

Это перегруженная функция.

Добавляет value в список.

См. также append() и operator<<().

[since 5.11] QList<T> &QList::operator+=(QList::rvalue_ref value)

Это перегруженная функция.

Эта функция была добавлена в Qt 5.11.

См. также append() и operator<<().

[since 5.6] bool QList::operator<(const QList<T> &other) const

Возвращает true если этот список лексикографически меньше other; в противном случае возвращает false.

Для этой функции требуется, чтобы тип значения имел реализацию operator<().

Эта функция была добавлена в Qt 5.6.

QList<T> &QList::operator<<(QList::parameter_type value)

Добавляет value в список и возвращает ссылку на этот список.

См. также append() и operator+=().

QList<T> &QList::operator<<(const QList<T> &other)

Добавляет other в список и возвращает ссылку на список.

[since 6.0] QList<T> &QList::operator<<(QList<T> &&other)

Это перегруженная функция.

Эта функция была добавлена в Qt 6.0.

[since 5.11] QList<T> &QList::operator<<(QList::rvalue_ref value)

Это перегруженная функция.

Эта функция была добавлена в Qt 5.11.

См. также append() и operator+=().

[since 5.6] bool QList::operator<=(const QList<T> &other) const

Возвращает true если этот список лексикографически меньше или равен other; в противном случае возвращает false.

Для этой функции требуется, чтобы тип значения имел реализацию operator<().

Эта функция была добавлена в Qt 5.6.

[since 5.14] QList<T> &QList::operator=(std::initializer_list<T> args)

Присваивает коллекцию значений в args экземпляру QList.

Эта функция была добавлена в Qt 5.14.

bool QList::operator==(const QList<T> &other) const

Возвращает true если other равно этому списку; в противном случае возвращает false.

Два списка считаются равными, если они содержат одинаковые значения в том же порядке.

Для этой функции требуется, чтобы тип значения имел реализацию operator==().

См. также operator!=().

[since 5.6] bool QList::operator>(const QList<T> &other) const

Возвращает true если этот список лексикографически больше other; в противном случае возвращает false.

Для этой функции требуется, чтобы тип значения имел реализацию operator<().

Эта функция была добавлена в Qt 5.6.

[since 5.6] bool QList::operator>=(const QList<T> &other) const

Возвращает true если этот список лексикографически больше или равен other; в противном случае возвращает false.

Для этой функции требуется, чтобы тип значения имел реализацию operator<().

Эта функция была добавлена в Qt 5.6.

QList::reference QList::operator[](qsizetype i)

Возвращает элемент с индексом i как изменяемую ссылку.

i должен быть корректным индексом в списке (т.е., 0 ≤ i < size()).

Обратите внимание, что использование не-константных операторов может привести к тому, что QList выполнит глубокую копию.

См. также at() и value().

QList::const_reference QList::operator[](qsizetype i) const

Это перегруженная функция.

Аналогично at(i).

Связанные нечленные функции

[since 6.1] template <typename T, typename AT> qsizetype erase(QList<T> &list, const AT &t)

Удаляет все элементы, равные t, из списка list. Возвращает количество удаленных элементов, если таковые имеются.

Примечание: В отличие от QList::removeAll, t не может быть ссылкой на элемент внутри list. Если вы не уверены, что это не так, сделайте копию t и вызовите эту функцию с копией.

Эта функция была добавлена в Qt 6.1.

См. также QList::removeAll() и erase_if.

[since 6.1] template <typename T, typename Predicate> qsizetype erase_if(QList<T> &list, Predicate pred)

Удаляет все элементы, для которых предикат pred возвращает true, из списка list. Возвращает количество удаленных элементов, если таковые имеются.

Эта функция была добавлена в Qt 6.1.

См. также erase.

[since 5.6] template <typename T> size_t qHash(const QList<T> &key, size_t seed = 0)

Возвращает значение хэша для key, используя seed в качестве начального значения для расчёта.

Для этой функции необходимо переопределить qHash() для типа значения T.

Эта функция была добавлена в Qt 5.6.

template <typename T> QDataStream &operator<<(QDataStream &out, const QList<T> &list)

Записывает список list в поток out.

Для этой функции необходимо, чтобы тип значения реализовывал operator<<().

См. также Формат операторов QDataStream.

template <typename T> QDataStream &operator>>(QDataStream &in, QList<T> &list)

Считывает список из потока in в list.

Для этой функции необходимо, чтобы тип значения реализовывал operator>>().

См. также Формат операторов QDataStream.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qlist.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API