Класс 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.
const_iterator QLinkedList::cend() const
Возвращает const STL-стиль итератор, указывающий на воображаемый элемент после последнего элемента в списке.
Эта функция была введена в Qt 5.0.
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.
iterator QLinkedList::erase(iterator pos)
Удаляет элемент, на который указывает итератор pos из списка и возвращает итератор на следующий элемент в списке (который может быть end()).
См. также insert().
iterator QLinkedList::erase(iterator begin, 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
Это перегруженная функция.
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_MARKERvoid 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