Класс QLinkedList
шаблон <typename T> class QLinkedListКласс QLinkedList — это шаблонный класс, предоставляющий списки. Подробнее...
| Заголовок: | #include <QLinkedList> |
| qmake: | QT += core |
Этот класс устарел. Он предоставляется для поддержки работы старого исходного кода. Мы настоятельно рекомендуем избегать его использования в новом коде.
Примечание: Все функции в этом классе являются реентерабельными.
Типы публичного доступа
| 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) |
Подробное описание
Примечание: Этот класс устарел, пожалуйста, используйте std::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.
template <typename InputIterator> QLinkedList::QLinkedList(InputIterator first, InputIterator last)
Создаёт список с содержимым в диапазоне итераторов [first, last).
Тип значения InputIterator должен быть преобразуем к T.
Эта функция была введена в Qt 5.14.
QLinkedList::QLinkedList(std::initializer_list<T> list)
Создаёт список из std::initializer_list, указанного в list.
Этот конструктор разрешён только если компилятор поддерживает C++11 initializer lists.
Эта функция была введена в 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(значение).
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!=().
Связанные нечленные функции
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-5.15/qlinkedlist.html