Класс 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<T> &&other) | |
| QLinkedList(InputIterator first, InputIterator last) | |
| QLinkedList(std::initializer_list<T> list) | |
| QLinkedList(const QLinkedList<T> &other) | |
| QLinkedList() | |
| QLinkedList<T> & | operator=(QLinkedList<T> &&other) |
| 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> и 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 *. Некоторые функции имеют дополнительные требования; например, 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<T> &&other)
Перемещающая конструктор QLinkedList, позволяющий ей указывать на тот же объект, на который указывал other.
Эта функция была введена в Qt 5.2.
QLinkedList::QLinkedList(InputIterator first, InputIterator last)
Создаёт список с содержимым в диапазоне итераторов [first, last).
Тип значения InputIterator должен быть приводим к типу T.
Эта функция была введена в Qt 5.14.
QLinkedList::QLinkedList(std::initializer_list<T> list)
Создаёт список из std::initializer_list, заданного list.
Этот конструктор разрешён только если компилятор поддерживает std::initializer_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=(QLinkedList<T> &&other)
Присваивает other текущему экземпляру QLinkedList.
Эта функция была введена в Qt 5.2.
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
Это перегруженная функция.
QLinkedList::const_iterator QLinkedList::cbegin() const
Возвращает постоянный итератор STL-стиля, указывающий на первый элемент в списке.
Эта функция была добавлена в Qt 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().
QLinkedList::const_reverse_iterator QLinkedList::crbegin() const
Возвращает постоянный итератор STL-стиля обратного порядка, указывающий на первый элемент в списке.
Эта функция была добавлена в Qt 5.6.
См. также begin(), rbegin(), и rend().
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.
Эта функция была добавлена в Qt 4.5.
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);
Эта функция была добавлена в Qt 4.1.
См. также 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).
END_OF_DOCUMENT_MARKERQLinkedList::reverse_iterator QLinkedList::rbegin()
Возвращает обратный итератор STL-стиля, указывающий на первый элемент в списке в обратном порядке.
Эта функция была введена в Qt 5.6.
См. также begin(), crbegin() и rend().
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==().
Эта функция была введена в Qt 4.4.
См. также insert().
QLinkedList::reverse_iterator QLinkedList::rend()
Возвращает обратный итератор STL-стиля, указывающий на элемент, следующий за последним элементом в списке в обратном порядке.
Эта функция была введена в Qt 5.6.
См. также end(), crend() и rbegin().
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.
Эта функция была введена в 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 в список.
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.14/qlinkedlist.html