Класс QLinkedList
шаблон <typename T> класс QLinkedListКласс QLinkedList — это шаблонный класс, предоставляющий списки. Подробнее...
| Заголовок: | #include <QLinkedList> |
| CMake: | find_package(Qt6 COMPONENTS Core5Compat REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core5Compat) |
| qmake: | QT += core5compat |
Примечание: Все функции в этом классе являются перевходными.
Публичные типы
Публичные функции
| QLinkedList(QLinkedList<T> &&other) | |
| QLinkedList(InputIterator first, InputIterator last) | |
| QLinkedList(std::initializer_list<T> list) | |
| QLinkedList(const QLinkedList<T> &other) | |
| QLinkedList() | |
| QLinkedList<T> & | operator=(const QLinkedList<T> &other) |
| ~QLinkedList() | |
| void | append(const T &value) |
| T & | back() |
| const T & | back() const |
| QLinkedList::iterator | begin() |
| QLinkedList::const_iterator | begin() const |
| QLinkedList::const_iterator | cbegin() const |
| QLinkedList::const_iterator | cend() const |
| void | clear() |
| QLinkedList::const_iterator | constBegin() const |
| QLinkedList::const_iterator | constEnd() const |
| bool | contains(const T &value) const |
| int | count(const T &value) const |
| int | count() const |
| QLinkedList::const_reverse_iterator | crbegin() const |
| QLinkedList::const_reverse_iterator | crend() const |
| bool | empty() const |
| QLinkedList::iterator | end() |
| QLinkedList::const_iterator | end() const |
| bool | endsWith(const T &value) const |
| QLinkedList::iterator | erase(QLinkedList::iterator pos) |
| QLinkedList::iterator | erase(QLinkedList::iterator begin, QLinkedList::iterator end) |
| T & | first() |
| const T & | first() const |
| T & | front() |
| const T & | front() const |
| QLinkedList::iterator | insert(QLinkedList::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) |
| QLinkedList::reverse_iterator | rbegin() |
| QLinkedList::const_reverse_iterator | rbegin() const |
| int | removeAll(const T &value) |
| void | removeFirst() |
| void | removeLast() |
| bool | removeOne(const T &value) |
| QLinkedList::reverse_iterator | rend() |
| QLinkedList::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) |
| 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<T> — один из универсальных классов контейнеров Qt. Он хранит список значений и предоставляет доступ на основе итераторов, а также постоянное время вставки и удаления.
QList<T> и QLinkedList<T> предоставляют аналогичную функциональность. Вот обзор:
- Для большинства целей QList — это правильный класс для использования. Его API на основе индексов удобнее, чем API QLinkedList на основе итераторов. Его элементы занимают смежные позиции в памяти. Он также приводит к меньшему коду в исполняемом файле.
- Если вам нужна реальная связанная структура данных, с гарантией постоянного времени вставок в середине списка и итераторов для элементов вместо индексов, используйте QLinkedList.
Вот пример 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 *. Некоторые функции имеют дополнительные требования; например, contains() и removeAll() ожидают, что тип значения поддерживает operator==(). Эти требования документированы для каждой функции.
Если вы хотите вставить, изменить или удалить элементы в середине списка, вы должны использовать итератор. QLinkedList предоставляет как итераторы в стиле Java (QLinkedListIterator и QMutableLinkedListIterator), так и итераторы в стиле STL (QLinkedList::const_iterator и QLinkedList::iterator). Подробности см. в документации по этим классам.
См. также QLinkedListIterator, QMutableLinkedListIterator и QList.
Документация по типам членов
QLinkedList::ConstIterator
Синоним Qt-стиля для QLinkedList::const_iterator.
QLinkedList::Iterator
Синоним Qt-стиля для QLinkedList::iterator.
QLinkedList::const_pointer
Тип для const T *. Предоставлено для совместимости со STL.
QLinkedList::const_reference
Тип для const T &. Предоставлено для совместимости со STL.
[since 5.6] 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.
QLinkedList::difference_type
Тип для ptrdiff_t. Предоставлено для совместимости со STL.
QLinkedList::pointer
Тип для T *. Предоставлено для совместимости со STL.
QLinkedList::reference
Тип для T &. Предоставлено для совместимости со STL.
[since 5.6] 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.
QLinkedList::size_type
Тип для int. Предоставлено для совместимости со STL.
QLinkedList::value_type
Тип для T. Предоставлено для совместимости со STL.
Документация по функциям-членам
[since 5.2] QLinkedList::QLinkedList(QLinkedList<T> &&other)
Перемещающее создание экземпляра QLinkedList, делая его указывающим на тот же объект, что и other.
Эта функция была введена в Qt 5.2.
[since 5.14] template <typename InputIterator> QLinkedList::QLinkedList(InputIterator first, InputIterator last)
Создаёт список с содержимым в диапазоне итераторов [first, last).
Тип значения InputIterator должен быть преобразуем в T.
Эта функция была введена в Qt 5.14.
[since 5.2] QLinkedList::QLinkedList(std::initializer_list<T> list)
Создаёт список из std::initializer_list, указанного в list.
Этот конструктор активен только если компилятор поддерживает списки инициализации C++11.
Эта функция была введена в Qt 5.2.
QLinkedList::QLinkedList(const QLinkedList<T> &other)
Создаёт копию other.
Эта операция происходит за постоянное время, потому что QLinkedList является неявно совместно используемым. Это делает возврат QLinkedList из функции очень быстрым. Если совместно используемый экземпляр изменяется, он будет скопирован (copy-on-write), и это занимает линейное время.
См. также operator=().
QLinkedList::QLinkedList()
Создаёт пустой список.
QLinkedList<T> &QLinkedList::operator=(const QLinkedList<T> &other)
Присваивает other этому списку и возвращает ссылку на этот список.
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
Это перегруженная функция.
QLinkedList::iterator QLinkedList::begin()
Возвращает итератор в стиле STL, указывающий на первый элемент в списке.
См. также constBegin() и end().
QLinkedList::const_iterator QLinkedList::begin() const
Это перегруженный метод.
[since 5.0] QLinkedList::const_iterator QLinkedList::cbegin() const
Возвращает константный итератор STL, указывающий на первый элемент в списке.
Эта функция была добавлена в Qt 5.0.
[since 5.0] QLinkedList::const_iterator QLinkedList::cend() const
Возвращает константный итератор STL, указывающий на несуществующий элемент после последнего элемента в списке.
Эта функция была добавлена в Qt 5.0.
void QLinkedList::clear()
Удаляет все элементы из списка.
См. также removeAll().
QLinkedList::const_iterator QLinkedList::constBegin() const
Возвращает константный итератор STL, указывающий на первый элемент в списке.
См. также begin() и constEnd().
QLinkedList::const_iterator QLinkedList::constEnd() 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().
[since 5.6] QLinkedList::const_reverse_iterator QLinkedList::crbegin() const
Возвращает константный итератор STL, указывающий на первый элемент в списке в обратном порядке.
Эта функция была добавлена в Qt 5.6.
См. также begin(), rbegin(), и rend().
[since 5.6] QLinkedList::const_reverse_iterator QLinkedList::crend() const
Возвращает константный итератор STL, указывающий на несуществующий элемент после последнего элемента в списке в обратном порядке.
Эта функция была добавлена в Qt 5.6.
См. также end(), rend(), и rbegin().
bool QLinkedList::empty() const
Эта функция предоставляется для совместимости со STL. Она эквивалентна isEmpty() и возвращает true если список пуст.
QLinkedList::iterator QLinkedList::end()
Возвращает итератор STL, указывающий на несуществующий элемент после последнего элемента в списке.
См. также begin() и constEnd().
QLinkedList::const_iterator QLinkedList::end() const
Это перегруженный метод.
bool QLinkedList::endsWith(const T &value) const
Возвращает true если список не пустой и его последний элемент равен value; в противном случае возвращает false.
QLinkedList::iterator QLinkedList::erase(QLinkedList::iterator pos)
Удаляет элемент, на который указывает итератор pos из списка и возвращает итератор на следующий элемент в списке (который может быть end()).
См. также insert().
QLinkedList::iterator QLinkedList::erase(QLinkedList::iterator begin, QLinkedList::iterator end)
Это перегруженный метод.
Удаляет все элементы от begin до (но не включая) end.
T &QLinkedList::first()
Возвращает ссылку на первый элемент в списке. Эта функция предполагает, что список не пуст.
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);
См. также toStdList().
T &QLinkedList::front()
Эта функция предоставляется для совместимости со STL. Она эквивалентна first().
const T &QLinkedList::front() const
Это перегруженный метод.
QLinkedList::iterator QLinkedList::insert(QLinkedList::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).
[since 5.6] QLinkedList::reverse_iterator QLinkedList::rbegin()
Возвращает итератор STL, указывающий на первый элемент в списке в обратном порядке.
Эта функция была добавлена в Qt 5.6.
См. также begin(), crbegin(), и rend().
END_OF_DOCUMENT_MARKER
[since 5.6] QLinkedList::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().
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==().
См. также insert().
[since 5.6] QLinkedList::reverse_iterator QLinkedList::rend()
Возвращает итератор типа STL-стиля, указывающий на позицию сразу после последнего элемента в списке, в обратном порядке.
Этот метод был добавлен в Qt 5.6.
См. также end(), crend(), и rbegin().
[since 5.6] QLinkedList::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.
См. также isEmpty() и first().
void QLinkedList::swap(QLinkedList<T> &other)
Меняет местами список other с этим списком. Эта операция очень быстрая и никогда не приводит к ошибке.
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();
См. также 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 в список.
bool QLinkedList::operator==(const QLinkedList<T> &other) const
Возвращает true если other равно этому списку; в противном случае возвращает false.
Два списка считаются равными, если они содержат одинаковые значения в том же порядке.
Для этого метода тип значения должен реализовывать operator==().
См. также operator!=().
Связанные нечленные функции
template <typename T> QDataStream &operator<<(QDataStream &out, const QLinkedList<T> &list)
Записывает связанный список list в поток out.
Для этого метода тип значения должен реализовывать operator<<().
См. также Формат операторов QDataStream.
template <typename T> 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-6.2/qlinkedlist.html