Spec-Zone.ru › Qt 5.13

Класс QList

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

Заголовок: #include <QList>
qmake: QT += core
Наследуется от:

QByteArrayList, QItemSelection, QQueue и QStringList

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

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

Типы публичного доступа

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

Публичные функции

QList(std::initializer_list<T> args)
QList(QList<T> &&other)
QList(const QList<T> &other)
QList()
QList<T> & operator=(QList<T> &&other)
QList<T> & operator=(const QList<T> &other)
~QList()
void append(const T &value)
void append(const QList<T> &value)
const T & at(int i) const
T & back()
const T & back() const
QList::iterator begin()
QList::const_iterator begin() const
QList::const_iterator cbegin() const
QList::const_iterator cend() const
void clear()
QList::const_iterator constBegin() const
QList::const_iterator constEnd() const
const T & constFirst() const
const T & constLast() const
bool contains(const T &value) const
int count(const T &value) const
int count() const
QList::const_reverse_iterator crbegin() const
QList::const_reverse_iterator crend() const
bool empty() const
QList::iterator end()
QList::const_iterator end() const
bool endsWith(const T &value) const
QList::iterator erase(QList::iterator pos)
QList::iterator erase(QList::iterator begin, QList::iterator end)
T & first()
const T & first() const
T & front()
const T & front() const
int indexOf(const T &value, int from = ...) const
void insert(int i, const T &value)
QList::iterator insert(QList::iterator before, const T &value)
bool isEmpty() const
T & last()
const T & last() const
int lastIndexOf(const T &value, int from = ...) const
int length() const
QList<T> mid(int pos, int length = -1) const
void move(int from, int to)
void pop_back()
void pop_front()
void prepend(const T &value)
void push_back(const T &value)
void push_front(const T &value)
QList::reverse_iterator rbegin()
QList::const_reverse_iterator rbegin() const
int removeAll(const T &value)
void removeAt(int i)
void removeFirst()
void removeLast()
bool removeOne(const T &value)
QList::reverse_iterator rend()
QList::const_reverse_iterator rend() const
void replace(int i, const T &value)
void reserve(int alloc)
int size() const
bool startsWith(const T &value) const
void swap(QList<T> &other)
void swapItemsAt(int i, int j)
T takeAt(int i)
END_OF_DOCUMENT_MARKER
T takeFirst()
T takeLast()
QSet<T> toSet() const
std::list<T> toStdList() const
QVector<T> toVector() const
T value(int i) const
T value(int i, const T &defaultValue) const
bool operator!=(const QList<T> &other) const
QList<T> operator+(const QList<T> &other) const
QList<T> & operator+=(const QList<T> &other)
QList<T> & operator+=(const T &value)
QList<T> & operator<<(const QList<T> &other)
QList<T> & operator<<(const T &value)
bool operator==(const QList<T> &other) const
T & operator[](int i)
const T & operator[](int i) const

Статические публичные члены

QList<T> fromSet(const QSet<T> &set)
QList<T> fromStdList(const std::list<T> &list)
QList<T> fromVector(const QVector<T> &vector)

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

uint qHash(const QList<T> &key, uint seed = ...)
bool operator<(const QList<T> &lhs, const QList<T> &rhs)
QDataStream & operator<<(QDataStream &out, const QList<T> &list)
bool operator<=(const QList<T> &lhs, const QList<T> &rhs)
bool operator>(const QList<T> &lhs, const QList<T> &rhs)
bool operator>=(const QList<T> &lhs, const QList<T> &rhs)
QDataStream & operator>>(QDataStream &in, QList<T> &list)

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

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

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

  • QVector должен быть вашим первоочередным выбором. QVector<T> обычно обеспечивает лучшую производительность, чем QList<T>, потому что QVector<T> всегда хранит свои элементы последовательно в памяти, тогда как QList<T> выделяет свои элементы в куче, если sizeof(T) <= sizeof(void*) и тип T объявлен как Q_MOVABLE_TYPE или Q_PRIMITIVE_TYPE с помощью Q_DECLARE_TYPEINFO. См. раздел «Преимущества и недостатки использования QList» для объяснений.
  • Однако, QList используется во всем API Qt для передачи параметров и возврата значений. Используйте QList для взаимодействия с этими API.
  • Если вам нужен настоящий связанный список, который гарантирует постоянное время вставки в середине списка и использует итераторы для элементов, а не индексов, используйте QLinkedList.

Примечание: QVector и QVarLengthArray оба гарантируют совместимость с C-массивами. QList не гарантирует этого. Это может быть важно, если ваше приложение должно взаимодействовать с API C.

Примечание: Итераторы в QLinkedList и ссылки в QLists, выделяющие память в куче, остаются действительными до тех пор, пока элементы, на которые они ссылаются, остаются в контейнере. Это неверно для итераторов и ссылок в QVector и QLists, не выделяющих память в куче.

Внутренне, QList<T> представлен массивом T, если sizeof(T) <= sizeof(void*) и тип T объявлен как Q_MOVABLE_TYPE или Q_PRIMITIVE_TYPE с помощью Q_DECLARE_TYPEINFO. В противном случае QList<T> представлен массивом T* и элементы выделяются в куче.

Представление массивом позволяет очень быстро выполнять вставки и доступ по индексу. Операции prepend() и append() также очень быстры, потому что QList предварительно выделяет память на обоих концах своего внутреннего массива. (См. Сложность алгоритма для получения подробностей).

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

Обратите внимание, что внутренний массив только увеличивается на протяжении всего жизненного цикла списка. Он никогда не уменьшается. Внутренний массив удаляется деструктором и оператором присваивания, когда один список присваивается другому.

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

QList<int> integerList;
QList<QDate> dateList;

Qt включает класс QStringList, который наследуется от QList<QString> и добавляет несколько функций удобства, таких как QStringList::join() и QStringList::filter(). QString::split() создаёт QStringLists из строк.

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

QList<QString> list = { "one", "two", "three" };

QList предоставляет эти основные функции для добавления, перемещения и удаления элементов: insert(), replace(), removeAt(), move() и swap(). Кроме того, он предоставляет следующие функции удобства: append(), operator<<(), operator+=(), prepend(), removeFirst() и removeLast().

operator<<() позволяет удобно добавлять несколько элементов в список:

list << "four" << "five";

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

if (list[0] == "Bob")
    list[0] = "Robert";

Поскольку QList реализован как массив указателей для типов, которые больше указателя или не могут быть перемещены, эта операция требует (постоянного времени). Для чтения без изменений альтернативный синтаксис — использование at():

for (int i = 0; i < list.size(); ++i) {
    if (list.at(i) == "Jane")
        cout << "Found Jane at position " << i << endl;
}

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

Часто требуется удалить элемент из списка и выполнить с ним какие-то действия. Для этого QList предоставляет takeAt(), takeFirst() и takeLast(). Вот цикл, который удаляет элементы из списка по одному и вызывает delete для них:

QList<QWidget *> list;
...
while (!list.isEmpty())
    delete list.takeFirst();

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

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

int i = list.indexOf("Jane");
if (i != -1)
    cout << "First occurrence of Jane is at position " << i << endl;

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

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

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

QList не поддерживает вставку, добавление в начало, добавление в конец или замену с помощью ссылок на собственные значения. В противном случае ваше приложение завершит работу с сообщением об ошибке.

Чтобы QList была максимально эффективной, ее члены не проверяют входные данные перед их использованием. За исключением isEmpty(), члены всегда предполагают, что список не пустой. Функции-члены, которые принимают значения индексов в качестве параметров, всегда предполагают, что их параметры значений индексов находятся в допустимом диапазоне. Это означает, что члены QList могут потерпеть неудачу. Если вы определите QT_NO_DEBUG при компиляции, ошибки не будут обнаружены. Если вы не определите QT_NO_DEBUG, ошибки будут обнаружены с помощью Q_ASSERT() или Q_ASSERT_X() с соответствующим сообщением.

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

Дополнительные члены

Если T — QByteArray, у этого класса есть несколько дополнительных членов, которые можно использовать. Для получения дополнительной информации см. документацию по QByteArrayList.

Если T — QString, у этого класса есть следующие дополнительные члены: filter, join, removeDuplicates, sort.

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

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

См. также QListIterator, QMutableListIterator, QLinkedList и QVector.

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

typedef QList::ConstIterator

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

typedef QList::Iterator

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

typedef QList::const_pointer

Тип для const T *. Предоставлено для совместимости со STL.

typedef QList::const_reference

Тип для const T &. Предоставлено для совместимости со STL.

typedef QList::const_reverse_iterator

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

Это просто тип для std::reverse_iterator<const_iterator>.

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

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

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

typedef QList::difference_type

Тип данных для ptrdiff_t. Предоставлено для совместимости со STL.

typedef QList::pointer

Тип данных для T *. Предоставлено для совместимости со STL.

typedef QList::reference

Тип данных для T &. Предоставлено для совместимости со STL.

typedef QList::reverse_iterator

QList::reverse_iterator предоставляет итератор обратного поиска неконстантного стиля STL для QList.

Это просто тип для std::reverse_iterator<iterator>.

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

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

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

typedef QList::size_type

Тип данных для int. Предоставлено для совместимости со STL.

typedef QList::value_type

Тип данных для T. Предоставлено для совместимости со STL.

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

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

Создает список из std::initializer_list, указанного параметром args.

Этот конструктор включен только если компилятор поддерживает C++11 initializer lists.

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

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

Конструирует QList, ссылаясь на тот же объект, что и other.

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

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

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

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

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

QList::QList()

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

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

Перемещает other в этот экземпляр QList.

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

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

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

QList::~QList()

Удаляет список. Ссылки на значения в списке и все итераторы этого списка становятся недействительными.

void QList::append(const T &value)

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

Пример:

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

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

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

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

void QList::append(const QList<T> &value)

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

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

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

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

const T &QList::at(int i) const

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

Эта функция очень быстрая (постоянное время).

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

T &QList::back()

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

const T &QList::back() const

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

QList::iterator QList::begin()

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

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

QList::const_iterator QList::begin() const

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

QList::const_iterator QList::cbegin() const

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

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

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

QList::const_iterator QList::cend() const

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

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

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

void QList::clear()

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

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

QList::const_iterator QList::constBegin() const

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

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

QList::const_iterator QList::constEnd() const

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

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

const T &QList::constFirst() const

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

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

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

const T &QList::constLast() const

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

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

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

bool QList::contains(const T &value) const

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

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

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

int QList::count(const T &value) const

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

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

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

int QList::count() const

Возвращает количество элементов в списке. Это по сути то же самое, что и size().

QList::const_reverse_iterator QList::crbegin() const

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

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

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

QList::const_reverse_iterator QList::crend() const

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

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

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

bool QList::empty() const

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

QList::iterator QList::end()

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

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

QList::const_iterator QList::end() const

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

bool QList::endsWith(const T &value) const

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

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

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

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

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

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

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

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

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

T &QList::first()

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

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

const T &QList::first() const

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

[static] QList<T> QList::fromSet(const QSet<T> &set)

Возвращает объект QList с данными, содержащимися в set. Порядок элементов в QList не определён.

Пример:

QSet<int> set;
set << 20 << 30 << 40 << ... << 70;

QList<int> list = QList<int>::fromSet(set);
qSort(list);

См. также fromVector(), toSet(), и QSet::toList().

[static] QList<T> QList::fromStdList(const std::list<T> &list)

Возвращает объект QList с данными, содержащимися в list. Порядок элементов в QList такой же, как в list.

Пример:

std::list<double> stdlist;
list.push_back(1.2);
list.push_back(0.5);
list.push_back(3.14);

QList<double> list = QList<double>::fromStdList(stdlist);

См. также toStdList() и QVector::fromStdVector().

[static] QList<T> QList::fromVector(const QVector<T> &vector)

Возвращает объект QList с данными, содержащимися в vector.

Пример:

QVector<double> vect;
vect << 20.0 << 30.0 << 40.0 << 50.0;

QList<double> list = QVector<T>::fromVector(vect);
// list: [20.0, 30.0, 40.0, 50.0]

См. также fromSet(), toVector(), и QVector::toList().

T &QList::front()

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

const T &QList::front() const

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

int QList::indexOf(const T &value, int from = ...) 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

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

Обратите внимание, что QList использует индексы, начиная с 0, так же, как и массивы C++. Отрицательные индексы не поддерживаются за исключением упомянутого выше случая.

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

void QList::insert(int i, const T &value)

Вставляет элемент value в список по индексу i. Если i ≤ 0, элемент вставляется в начало списка. Если i ≥ size(), элемент вставляется в конец списка.

Пример:

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

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

QList::iterator QList::insert(QList::iterator before, const T &value)

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

Вставляет элемент value перед элементом, на который указывает итератор before. Возвращает итератор, указывающий на вставленный элемент. Обратите внимание, что итератор, переданный в функцию, станет недействительным после вызова; вместо него следует использовать возвращённый итератор.

bool QList::isEmpty() const

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

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

T &QList::last()

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

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

const T &QList::last() const

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

int QList::lastIndexOf(const T &value, int from = ...) 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

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

Обратите внимание, что QList использует индексы, начиная с 0, так же, как и массивы C++. Отрицательные индексы не поддерживаются за исключением упомянутого выше случая.

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

int QList::length() const

Эта функция идентична count().

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

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

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

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

void QList::move(int from, int to)

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

Пример:

QList<QString> list;
list << "A" << "B" << "C" << "D" << "E" << "F";
list.move(1, 4);
// list: ["A", "C", "D", "E", "B", "F"]

Это эквивалентно insert(to, takeAt(from)). Функция предполагает, что from и to неотрицательны и меньше size(). Для предотвращения ошибок, убедитесь, что from и to неотрицательны и меньше size().

См. также swap(), insert() и takeAt().

void QList::pop_back()

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

void QList::pop_front()

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

void QList::prepend(const T &value)

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

Пример:

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

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

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

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

void QList::push_back(const T &value)

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

void QList::push_front(const T &value)

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

QList::reverse_iterator QList::rbegin()

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

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

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

QList::const_reverse_iterator QList::rbegin() const

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

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

int QList::removeAll(const T &value)

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

Пример:

QList<QString> list;
list << "sun" << "cloud" << "sun" << "rain";
list.removeAll("sun");
// list: ["cloud", "rain"]

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

См. также removeOne(), removeAt(), takeAt() и replace().

void QList::removeAt(int i)

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

См. также takeAt(), removeFirst(), removeLast() и removeOne().

void QList::removeFirst()

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

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

void QList::removeLast()

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

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

bool QList::removeOne(const T &value)

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

Пример:

QList<QString> list;
list << "sun" << "cloud" << "sun" << "rain";
list.removeOne("sun");
// list: ["cloud", "sun", "rain"]

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

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

См. также removeAll(), removeAt(), takeAt() и replace().

QList::reverse_iterator QList::rend()

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

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

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

QList::const_reverse_iterator QList::rend() const

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

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

void QList::replace(int i, const T &value)

Заменяет элемент по индексу i значением value. i должен быть допустимым индексом в списке (т.е., 0 ≤ i < size()).

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

void QList::reserve(int alloc)

Зарезервировать место для alloc элементов.

Если alloc меньше текущего размера списка, ничего не произойдёт.

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

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

int QList::size() const

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

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

bool QList::startsWith(const T &value) const

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

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

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

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

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

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

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

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

Пример:

QList<QString> list;
list << "A" << "B" << "C" << "D" << "E" << "F";
list.swapItemsAt(1, 4);
// list: ["A", "E", "C", "D", "B", "F"]

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

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

T QList::takeAt(int i)

Удаляет элемент с индексом i и возвращает его. i должен быть корректным индексом в списке (т.е., 0 ≤ i < size()).

Если значение возврата не используется, removeAt() более эффективна.

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

T QList::takeFirst()

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

Если этот список не общий, эта операция выполняется за постоянное время.

Если значение возврата не используется, removeFirst() более эффективна.

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

T QList::takeLast()

Удаляет последний элемент в списке и возвращает его. Это то же самое, что и takeAt(size() - 1). Эта функция предполагает, что список не пуст. Для предотвращения ошибок вызовите isEmpty() перед вызовом этой функции.

Если этот список не общий, эта операция выполняется за постоянное время.

Если значение возврата не используется, removeLast() более эффективна.

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

QSet<T> QList::toSet() const

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

Пример:

QStringList list;
list << "Julia" << "Mike" << "Mike" << "Julia" << "Julia";

QSet<QString> set = list.toSet();
set.contains("Julia");  // returns true
set.contains("Mike");   // returns true
set.size();             // returns 2

См. также toVector(), fromSet() и QSet::fromList().

std::list<T> QList::toStdList() const

Возвращает объект std::list с данными, содержащимися в этом QList. Пример:

QList<double> list;
list << 1.2 << 0.5 << 3.14;

std::list<double> stdlist = list.toStdList();

См. также fromStdList() и QVector::toStdVector().

QVector<T> QList::toVector() const

Возвращает объект QVector с данными, содержащимися в этом QList.

Пример:

QStringList list;
list << "Sven" << "Kim" << "Ola";

QVector<QString> vect = list.toVector();
// vect: ["Sven", "Kim", "Ola"]

См. также toSet(), fromVector() и QVector::fromList().

T QList::value(int i) const

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

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

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

T QList::value(int i, const T &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+=().

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для этой функции тип значения должен иметь реализацию operator==().

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

T &QList::operator[](int i)

Возвращает элемент с индексом i как изменяемую ссылку. i должен быть корректным индексом в списке (т.е., 0 ≤ i < size()).

Если эта функция вызвана для списка, который в данный момент разделяется, она вызовет копирование всех элементов. В противном случае эта функция выполняется за постоянное время. Если вы не хотите изменять список, используйте QList::at().

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

const T &QList::operator[](int i) const

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

То же, что и at(). Эта функция выполняется за постоянное время.

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

uint QList::qHash(const QList<T> &key, uint seed = ...)

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

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

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

bool QList::operator<(const QList<T> &lhs, const QList<T> &rhs)

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

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

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

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

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

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

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

bool QList::operator<=(const QList<T> &lhs, const QList<T> &rhs)

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

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

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

bool QList::operator>(const QList<T> &lhs, const QList<T> &rhs)

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

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

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

bool QList::operator>=(const QList<T> &lhs, const QList<T> &rhs)

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

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

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

QDataStream &QList::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-5.13/qlist.html

Spec-Zone.ru

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