Класс 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 |
| 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) |
| 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 *. Некоторые функции имеют дополнительные требования; например, 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
Это перегруженная функция.
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
Возвращает постоянный итератор в обратном порядке, указывающий на первый элемент в списке.
Эта функция была добавлена в Qt 5.6.
См. также begin(), rbegin() и rend().
QLinkedList::const_reverse_iterator QLinkedList::crend() const
Возвращает постоянный итератор в обратном порядке, указывающий на элемент, следующий за последним элементом в списке.
Эта функция была добавлена в 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()
Возвращает итератор в обратном порядке, указывающий на первый элемент в списке.
Эта функция была добавлена в 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 в список.
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/archives/qt-5.11/qlinkedlist.html