Spec-Zone.ru › Qt 5.15

Класс QList

шаблон <typename T> класс 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(InputIterator first, InputIterator last)
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 = 0) 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 = -1) 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)
END_OF_DOCUMENT_MARKER
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)
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 = 0)
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 и ссылки на элементы в 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 использует индексы, начинающиеся с 0, как и 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 << Qt::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 << Qt::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 предоставляет итератор обратного порядка типа const в стиле 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.

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

template <typename InputIterator> QList::QList(InputIterator first, InputIterator last)

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

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

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

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

Создаёт список из std::initializer_list, указанной в args.

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

Эта функция была добавлена в 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);
std::sort(list.begin(), list.end());

Примечание: С Qt 5.14 доступны конструкторы диапазонов для общих классов контейнеров Qt и следует использовать их вместо этого метода.

См. также 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);

Примечание: С Qt 5.14 доступны конструкторы диапазонов для общих классов контейнеров Qt и следует использовать их вместо этого метода.

См. также 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]

Примечание: С Qt 5.14 доступны конструкторы диапазонов для общих классов контейнеров Qt и следует использовать их вместо этого метода.

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

T &QList::front()

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

const T &QList::front() const

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

int QList::indexOf(const T &value, int from = 0) const

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

Пример:

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

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

Обратите внимание, что 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 = -1) const

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

Пример:

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

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

Обратите внимание, что 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"]

Для этой функции требуется, чтобы тип значения имел реализацию 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::swapItemsAt(int i, int j)

Меняет местами элемент по индексу i с элементом по индексу j. Эта функция предполагает, что оба i и j неотрицательны и меньше size(). Для предотвращения ошибок, проверьте, что оба i и j неотрицательны и меньше 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

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

См. также 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();

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

См. также 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"]

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

См. также 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(). Эта функция выполняется за постоянное время.

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

template <typename T> uint qHash(const QList<T> &key, uint seed = 0)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читает список из потока in в list.

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

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

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

Spec-Zone.ru

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