Класс 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() создает QStringList из строк.
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[](). Для не-константных списков 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 см. 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 предоставляет итератор обратного порядка для QList в стиле STL.
Это просто псевдоним для std::reverse_iterator<const_iterator>.
Предупреждение: Итераторы для неявно совместно используемых контейнеров не работают точно как итераторы STL. Следует избегать копирования контейнера, когда активны итераторы на этом контейнере. Для получения дополнительной информации см. Implicit sharing iterator problem.
Этот 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 предоставляет итератор обратного порядка для QList в стиле STL.
Это просто псевдоним для std::reverse_iterator<iterator>.
Предупреждение: Итераторы для неявно совместно используемых контейнеров не работают точно как итераторы STL. Следует избегать копирования контейнера, когда активны итераторы на этом контейнере. Для получения дополнительной информации см. Implicit sharing iterator problem.
Этот 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 инициализаторы списков.
Эта функция была добавлена в 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 >= размер(), значение добавляется в конец списка.
Пример:
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.
См. также размер().
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 и меньше размера(). Чтобы избежать ошибок, проверьте, что как from, так и to не меньше 0 и меньше размера().
См. также 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 < размер()).
См. также takeAt(), removeFirst(), removeLast() и removeOne().
void QList::removeFirst()
Удаляет первый элемент в списке. Вызов этой функции эквивалентен вызову removeAt(0). Список не должен быть пустым. Если список может быть пустым, вызовите isEmpty() перед вызовом этой функции.
См. также removeAt() и takeFirst().
void QList::removeLast()
Удаляет последний элемент в списке. Вызов этой функции эквивалентен вызову removeAt(размер() - 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 < размер()).
См. также 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 неотрицательны и меньше size(). Для предотвращения ошибок, необходимо проверить, что i и j неотрицательны и меньше 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 выходит за пределы списка, функция возвращает значение по умолчанию для типа T. Если вы уверены, что индекс находится в пределах списка, используйте 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/qt-5.12/qlist.html