Spec-Zone.ru › Qt 5.9

Класс QLinkedList

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

Заголовок: #include <QLinkedList>
qmake: QT += core
  • Список всех членов, включая унаследованные

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

Открытые типы

класс 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

Открытые функции

QLinkedList()
QLinkedList(const QLinkedList<T> &other)
QLinkedList(std::initializer_list<T> list)
QLinkedList(QLinkedList<T> &&other)
~QLinkedList()
void append(const T &value)
T & back()
const T & back() const
iterator begin()
const_iterator begin() const
const_iterator cbegin() const
const_iterator cend() const
void clear()
const_iterator constBegin() const
const_iterator constEnd() const
bool contains(const T &value) const
int count(const T &value) const
int count() const
const_reverse_iterator crbegin() const
const_reverse_iterator crend() const
bool empty() const
iterator end()
const_iterator end() const
bool endsWith(const T &value) const
iterator erase(iterator pos)
iterator erase(iterator begin, iterator end)
T & first()
const T & first() const
T & front()
const T & front() const
iterator insert(iterator before, const T &value)
bool isEmpty() const
T & last()
const T & last() const
void pop_back()
void pop_front()
void prepend(const T &value)
void push_back(const T &value)
void push_front(const T &value)
reverse_iterator rbegin()
const_reverse_iterator rbegin() const
int removeAll(const T &value)
void removeFirst()
void removeLast()
bool removeOne(const T &value)
reverse_iterator rend()
const_reverse_iterator rend() const
int size() const
bool startsWith(const T &value) const
void swap(QLinkedList<T> &other)
T takeFirst()
T takeLast()
std::list<T> toStdList() const
bool operator!=(const QLinkedList<T> &other) const
QLinkedList<T> operator+(const QLinkedList<T> &other) const
QLinkedList<T> & operator+=(const QLinkedList<T> &other)
QLinkedList<T> & operator+=(const T &value)
QLinkedList<T> & operator<<(const QLinkedList<T> &other)
QLinkedList<T> & operator<<(const T &value)
QLinkedList<T> & operator=(const QLinkedList<T> &other)
QLinkedList<T> & operator=(QLinkedList<T> &&other)
bool operator==(const QLinkedList<T> &other) const

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

QLinkedList<T> fromStdList(const std::list<T> &list)

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

QDataStream & operator<<(QDataStream &out, const QLinkedList<T> &list)
QDataStream & operator>>(QDataStream &in, QLinkedList<T> &list)

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

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

QLinkedList<T> является одним из универсальных классов контейнеров Qt. Он хранит список значений и предоставляет доступ на основе итераторов, а также вставки и удаления за константное время.

QList<T>, QLinkedList<T> и QVector<T> предоставляют похожие функции. Вот обзор:

  • Для большинства целей, QList — это подходящий класс для использования. Его API на основе индексов удобнее, чем API QLinkedList на основе итераторов, и он обычно быстрее, чем QVector, из-за способа хранения элементов в памяти (см. Сложность алгоритмов для получения подробностей). Он также приводит к меньшему коду в исполняемом файле.
  • Если вам нужен реальный двусвязный список с гарантией вставки за константное время в середину списка и итераторами к элементам вместо индексов, используйте QLinkedList.
  • Если вы хотите, чтобы элементы занимали смежные позиции в памяти, используйте QVector.

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

QLinkedList<int> integerList;
QLinkedList<QTime> timeList;

QLinkedList хранит список элементов. Конструктор по умолчанию создаёт пустой список. Чтобы вставить элементы в список, вы можете использовать оператор <<:

QLinkedList<QString> list;
list << "one" << "two" << "three";
// list: ["one", "two", "three"]

Если вы хотите получить первый или последний элемент в двусвязном списке, используйте first() или last(). Если вы хотите удалить элемент с любого конца списка, используйте removeFirst() или removeLast(). Если вы хотите удалить все вхождения заданного значения в список, используйте removeAll().

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

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

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

Если вы хотите вставить, изменить или удалить элементы в середине списка, вы должны использовать итератор. QLinkedList предоставляет как итераторы в стиле Java (QLinkedListIterator и QMutableLinkedListIterator), так и итераторы в стиле STL (QLinkedList::const_iterator и QLinkedList::iterator). Подробности см. в документации по этим классам.

См. также QLinkedListIterator, QMutableLinkedListIterator, QList и QVector.

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

typedef QLinkedList::ConstIterator

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

typedef QLinkedList::Iterator

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

typedef QLinkedList::const_pointer

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

typedef QLinkedList::const_reference

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

typedef QLinkedList::const_reverse_iterator

Тип QLinkedList::const_reverse_iterator предоставляет итератор в стиле STL для обратного перебора элементов QLinkedList.

Это просто псевдоним для std::reverse_iterator<QLinkedList::const_iterator>.

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

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

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

typedef QLinkedList::difference_type

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

typedef QLinkedList::pointer

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

typedef QLinkedList::reference

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

typedef QLinkedList::reverse_iterator

Тип QLinkedList::reverse_iterator предоставляет итератор в стиле STL для обратного перебора элементов QLinkedList.

Это просто псевдоним для std::reverse_iterator<QLinkedList::iterator>.

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

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

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

typedef QLinkedList::size_type

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

typedef QLinkedList::value_type

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

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

QLinkedList::QLinkedList()

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

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

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

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

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

QLinkedList::QLinkedList(std::initializer_list<T> list)

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

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

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

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

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

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

QLinkedList::~QLinkedList()

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

void QLinkedList::append(const T &value)

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

Пример:

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

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

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

T &QLinkedList::back()

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

const T &QLinkedList::back() const

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

iterator QLinkedList::begin()

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

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

const_iterator QLinkedList::begin() const

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

const_iterator QLinkedList::cbegin() const

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

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

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

const_iterator QLinkedList::cend() const

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

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

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

void QLinkedList::clear()

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

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

const_iterator QLinkedList::constBegin() const

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

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

const_iterator QLinkedList::constEnd() const

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

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

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

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

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

См. также QLinkedListIterator::findNext() и QLinkedListIterator::findPrevious().

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

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

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

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

int QLinkedList::count() const

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

const_reverse_iterator QLinkedList::crbegin() const

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

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

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

const_reverse_iterator QLinkedList::crend() const

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

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

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

bool QLinkedList::empty() const

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

iterator QLinkedList::end()

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

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

const_iterator QLinkedList::end() const

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

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

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

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

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

iterator QLinkedList::erase(iterator pos)

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

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

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

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

Удаляет все элементы от begin до (но не включая) end.

T &QLinkedList::first()

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

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

const T &QLinkedList::first() const

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

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

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

Пример:

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

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

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

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

T &QLinkedList::front()

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

const T &QLinkedList::front() const

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

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

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

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

bool QLinkedList::isEmpty() const

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

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

T &QLinkedList::last()

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

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

const T &QLinkedList::last() const

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

void QLinkedList::pop_back()

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

void QLinkedList::pop_front()

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

void QLinkedList::prepend(const T &value)

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

Пример:

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

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

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

void QLinkedList::push_back(const T &value)

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

void QLinkedList::push_front(const T &value)

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

reverse_iterator QLinkedList::rbegin()

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

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

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

const_reverse_iterator QLinkedList::rbegin() const

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

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

int QLinkedList::removeAll(const T &value)

Удаляет все вхождения value в списке.

Пример:

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

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

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

void QLinkedList::removeFirst()

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

Это то же, что и erase(begin()).

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

END_OF_DOCUMENT_MARKER

void QLinkedList::removeLast()

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

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

bool QLinkedList::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.

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

reverse_iterator QLinkedList::rend()

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

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

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

const_reverse_iterator QLinkedList::rend() const

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

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

int QLinkedList::size() const

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

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

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

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

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

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

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

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

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

T QLinkedList::takeFirst()

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

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

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

T QLinkedList::takeLast()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Записывает связанный список list в поток out.

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

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

QDataStream &operator>>(QDataStream &in, QLinkedList<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.9/qlinkedlist.html

Spec-Zone.ru

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