Класс 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(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(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=(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).
QLinkedList::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 &QLinkedList::operator<<(QDataStream &out, const QLinkedList<T> &list)
Записывает связанный список list в поток out.
Для типа значения требуется реализация operator<<().
См. также Формат операторов QDataStream.
QDataStream &QLinkedList::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.13/qlinkedlist.html