Класс QList
Класс QList — это шаблонный класс, предоставляющий списки. Подробнее...
| Заголовок: | #include <QList> |
| qmake: | QT += core |
| Наследуется от: |
Примечание: Все функции в этом классе являются взаимопомещаемыми.
Типы
| класс | MemoryLayout |
| класс | 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() | |
| QList(const QList<T> &other) | |
| QList(QList<T> &&other) | |
| QList(std::initializer_list<T> args) | |
| ~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 | swap(int i, int j) |
| T | takeAt(int i) |
| 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) |
| QList<T> & | operator=(const QList<T> &other) |
| QList<T> & | operator=(QList<T> &&other) |
| 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 — шаблонный класс, предоставляющий списки.
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 и ссылки в выделяющих память QList остаются валидными, пока соответствующие элементы остаются в контейнере. Это неверно для итераторов и ссылок в QVector и QList, которые не выделяют память.
Внутри 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[](). Для не-const списков 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's value type must be an assignable data type. This covers most data types that are commonly used, but the compiler won't let you, for example, store a QWidget as a value; instead, store a QWidget *. A few functions have additional requirements; for example, indexOf() and lastIndexOf() expect the value type to support operator==(). These requirements are documented on a per-function basis.
Как и другие классы контейнеров, 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 см. Understand the Qt Containers.
См. также 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. Следует избегать копирования контейнера, пока итераторы активны в этом контейнере. Для получения дополнительной информации см. Проблема с итераторами неявного совместного использования.
Этот typedef был введён в 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. Следует избегать копирования контейнера, пока итераторы активны в этом контейнере. Для получения дополнительной информации см. Проблема с итераторами неявного совместного использования.
Этот typedef был введён в 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()
Создаёт пустой список.
QList::QList(const QList<T> &other)
Создаёт копию other.
Эта операция выполняется за постоянное время, так как QList является неявным общим. Это делает возвращение QList из функции очень быстрым. Если общий экземпляр модифицируется, он будет скопирован (copy-on-write), и это займёт линейное время.
См. также operator=().
QList::QList(QList<T> &&other)
Перемещает конструктор QList, делая его указывающим на тот же объект, на который указывает other.
Эта функция была введена в Qt 5.2.
QList::QList(std::initializer_list<T> args)
Создаёт список из std::initializer_list, указанного в args.
Этот конструктор включён только в том случае, если компилятор поддерживает C++11 initializer lists.
Эта функция была введена в Qt 4.8.
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.
QList::const_iterator QList::cend() const
Возвращает константный итератор стиля STL, указывающий на воображаемый элемент после последнего элемента в списке.
Данная функция была добавлена в Qt 5.0.
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 Данная функция требует, чтобы тип значения имел реализацию 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 Эта функция требует, чтобы тип значения имел реализацию 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 находятся как минимум в 0, но меньше, чем size(). Чтобы избежать ошибок, убедитесь, что и from, и to как минимум 0 и меньше 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"] Эта функция требует, чтобы тип значения имел реализацию 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"] Эта функция требует, чтобы тип значения имел реализацию 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::swap(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.swap(1, 4); // list: ["A", "E", "C", "D", "B", "F"]
См. также 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 в список.
QList<T> &QList::operator=(const QList<T> &other)
Присваивает other этому списку и возвращает ссылку на этот список.
QList<T> &QList::operator=(QList<T> &&other)
Присваивает other этому QList экземпляру.
Эта функция была добавлена в Qt 5.2.
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().
const T &QList::operator[](int i) const
Это перегруженная функция.
То же самое, что и at(). Эта функция выполняется за постоянное время.
Связанные не члены
uint qHash(const QList<T> &key, uint seed = ...)
Возвращает значение хеша для key, используя seed для инициализации вычисления.
Для работы этой функции необходимо переопределить qHash() для типа значения T.
Данная функция была введена в Qt 5.6.
bool operator<(const QList<T> &lhs, const QList<T> &rhs)
Возвращает true, если список lhs меньше, чем rhs в лексикографическом порядке; в противном случае возвращает false.
Для работы этой функции требуется, чтобы тип значения поддерживал operator<().
Данная функция была введена в Qt 5.6.
QDataStream &operator<<(QDataStream &out, const QList<T> &list)
Записывает список list в поток out.
Для работы этой функции требуется, чтобы тип значения реализовывал operator<<().
См. также Формат операторов QDataStream.
bool operator<=(const QList<T> &lhs, const QList<T> &rhs)
Возвращает true, если список lhs меньше или равен rhs в лексикографическом порядке; в противном случае возвращает false.
Для работы этой функции требуется, чтобы тип значения поддерживал operator<().
Данная функция была введена в Qt 5.6.
bool operator>(const QList<T> &lhs, const QList<T> &rhs)
Возвращает true, если список lhs больше, чем rhs в лексикографическом порядке; в противном случае возвращает false.
Для работы этой функции требуется, чтобы тип значения поддерживал operator<().
Данная функция была введена в Qt 5.6.
bool operator>=(const QList<T> &lhs, const QList<T> &rhs)
Возвращает true, если список lhs больше или равен rhs в лексикографическом порядке; в противном случае возвращает false.
Для работы этой функции требуется, чтобы тип значения поддерживал operator<().
Данная функция была введена в Qt 5.6.
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/archives/qt-5.11/qlist.html