QLinkedList Class▲
-
Header: QLinkedList
-
CMake:
find_package(Qt6 REQUIRED COMPONENTS Core5Compat)
target_link_libraries(mytarget PRIVATE Qt6::Core5Compat)
-
qmake: QT += core5compat
-
Group: QLinkedList is part of tools, shared
Detailed Description▲
QLinkedList<T> is one of Qt's generic container classes. It stores a list of values and provides iterator-based access as well as constant time insertions and removals.
QList<T> and QLinkedList<T> provide similar functionality. Here's an overview:
-
For most purposes, QList is the right class to use. Its index-based API is more convenient than QLinkedList's iterator-based API. Its items occupy adjacent memory positions. It also expands to less code in your executable.
-
If you need a real linked list, with guarantees of constant time insertions in the middle of the list and iterators to items rather than indexes, use QLinkedList.
Here's an example of a QLinkedList that stores integers and a QLinkedList that stores QTime values:
QLinkedList&
lt;int
&
gt; integerList;
QLinkedList&
lt;QTime&
gt; timeList;
QLinkedList stores a list of items. The default constructor creates an empty list. To insert items into the list, you can use operator<<():
QLinkedList&
lt;QString&
gt; list;
list &
lt;&
lt; "one"
&
lt;&
lt; "two"
&
lt;&
lt; "three"
;
// list: ["one", "two", "three"]
If you want to get the first or last item in a linked list, use first() or last(). If you want to remove an item from either end of the list, use removeFirst() or removeLast(). If you want to remove all occurrences of a given value in the list, use removeAll().
A common requirement is to remove the first or last item in the list and do something with it. For this, QLinkedList provides takeFirst() and takeLast(). Here's a loop that removes the items from a list one at a time and calls delete on them:
QLinkedList&
lt;QWidget *&
gt; list;
...
while
(!
list.isEmpty())
delete
list.takeFirst();
QLinkedList's value type must be an assignable data type. This covers most data types that are commonly used, but the compiler won't let you, for example, store a QWidget as a value; instead, store a QWidget *. A few functions have additional requirements; for example, contains() and removeAll() expect the value type to support operator==(). These requirements are documented on a per-function basis.
If you want to insert, modify, or remove items in the middle of the list, you must use an iterator. QLinkedList provides both Java-style iterators (QLinkedListIterator and QMutableLinkedListIterator) and STL-style iterators (QLinkedList::const_iterator and QLinkedList::iterator). See the documentation for these classes for details.
See Also▲
See also QLinkedListIterator, QMutableLinkedListIterator, QList
Member Type Documentation▲
QLinkedList::ConstIterator▲
Qt-style synonym for QLinkedList::const_iterator.
QLinkedList::Iterator▲
Qt-style synonym for QLinkedList::iterator.
QLinkedList::const_pointer▲
Typedef for const T *. Provided for STL compatibility.
QLinkedList::const_reference▲
Typedef for const T &. Provided for STL compatibility.
[since 5.6] QLinkedList::const_reverse_iterator▲
The QLinkedList::const_reverse_iterator typedef provides an STL-style const reverse iterator for QLinkedList.
It is simply a typedef for std::reverse_iterator<QLinkedList::const_iterator>.
Iterators on implicitly shared containers do not work exactly like STL-iterators. You should avoid copying a container while iterators are active on that container. For more information, read Implicit sharing iterator problem.
This typedef was introduced in Qt 5.6.
See Also▲
QLinkedList::difference_type▲
Typedef for ptrdiff_t. Provided for STL compatibility.
QLinkedList::pointer▲
Typedef for T *. Provided for STL compatibility.
QLinkedList::reference▲
Typedef for T &. Provided for STL compatibility.
[since 5.6] QLinkedList::reverse_iterator▲
The QLinkedList::reverse_iterator typedef provides an STL-style non-const reverse iterator for QLinkedList.
It is simply a typedef for std::reverse_iterator<QLinkedList::iterator>.
Iterators on implicitly shared containers do not work exactly like STL-iterators. You should avoid copying a container while iterators are active on that container. For more information, read Implicit sharing iterator problem.
This typedef was introduced in Qt 5.6.
See Also▲
QLinkedList::size_type▲
Typedef for int. Provided for STL compatibility.
QLinkedList::value_type▲
Typedef for T. Provided for STL compatibility.
Member Function Documentation▲
QLinkedList::QLinkedList()▲
Constructs an empty list.
QLinkedList::QLinkedList(const QLinkedList<T> &other)▲
Constructs a copy of other.
This operation occurs in constant time, because QLinkedList is implicitly shared. This makes returning a QLinkedList from a function very fast. If a shared instance is modified, it will be copied (copy-on-write), and this takes linear time.
See Also▲
See also operator=()
[since 5.2] QLinkedList::QLinkedList(std::initializer_list<T> list)▲
Constructs a list from the std::initializer_list specified by list.
This constructor is only enabled if the compiler supports C++11 initializer lists.
This function was introduced in Qt 5.2.
[since 5.14] QLinkedList::QLinkedList(InputIterator first, InputIterator last)▲
Constructs a list with the contents in the iterator range [first, last).
The value type of InputIterator must be convertible to T.
This function was introduced in Qt 5.14.
[since 5.2] QLinkedList::QLinkedList(QLinkedList<T> &&other)▲
Move-constructs a QLinkedList instance, making it point at the same object that other was pointing to.
This function was introduced in Qt 5.2.
QLinkedList::~QLinkedList()▲
Destroys the list. References to the values in the list, and all iterators over this list, become invalid.
void QLinkedList::append(const T &value)▲
Inserts value at the end of the list.
Example:
QLinkedList&
lt;QString&
gt; list;
list.append("one"
);
list.append("two"
);
list.append("three"
);
// list: ["one", "two", "three"]
This is the same as list.insert(end(), value).
See Also▲
See also operator<<(), prepend(), insert()
T &QLinkedList::back()▲
This function is provided for STL compatibility. It is equivalent to last().
const T &QLinkedList::back() const▲
This is an overloaded function.
QLinkedList::iterator QLinkedList::begin()▲
Returns an STL-style iterator pointing to the first item in the list.
See Also▲
See also constBegin(), end()
QLinkedList::const_iterator QLinkedList::begin() const▲
This is an overloaded function.
[since 5.0] QLinkedList::const_iterator QLinkedList::cbegin() const▲
Returns a const STL-style iterator pointing to the first item in the list.
This function was introduced in Qt 5.0.
See Also▲
[since 5.0] QLinkedList::const_iterator QLinkedList::cend() const▲
Returns a const STL-style iterator pointing to the imaginary item after the last item in the list.
This function was introduced in Qt 5.0.
See Also▲
void QLinkedList::clear()▲
QLinkedList::const_iterator QLinkedList::constBegin() const▲
Returns a const STL-style iterator pointing to the first item in the list.
See Also▲
QLinkedList::const_iterator QLinkedList::constEnd() const▲
Returns a const STL-style iterator pointing to the imaginary item after the last item in the list.
See Also▲
See also constBegin(), end()
bool QLinkedList::contains(const T &value) const▲
Returns true if the list contains an occurrence of value; otherwise returns false.
This function requires the value type to have an implementation of operator==().
See Also▲
int QLinkedList::count(const T &value) const▲
Returns the number of occurrences of value in the list.
This function requires the value type to have an implementation of operator==().
See Also▲
See also contains()
int QLinkedList::count() const▲
Same as size().
[since 5.6] QLinkedList::const_reverse_iterator QLinkedList::crbegin() const▲
Returns a const STL-style reverse iterator pointing to the first item in the list, in reverse order.
This function was introduced in Qt 5.6.
See Also▲
[since 5.6] QLinkedList::const_reverse_iterator QLinkedList::crend() const▲
Returns a const STL-style reverse iterator pointing to one past the last item in the list, in reverse order.
This function was introduced in Qt 5.6.
See Also▲
bool QLinkedList::empty() const▲
This function is provided for STL compatibility. It is equivalent to isEmpty() and returns true if the list is empty.
QLinkedList::iterator QLinkedList::end()▲
Returns an STL-style iterator pointing to the imaginary item after the last item in the list.
See Also▲
QLinkedList::const_iterator QLinkedList::end() const▲
This is an overloaded function.
bool QLinkedList::endsWith(const T &value) const▲
Returns true if the list is not empty and its last item is equal to value; otherwise returns false.
See Also▲
QLinkedList::iterator QLinkedList::erase(QLinkedList::iterator pos)▲
Removes the item pointed to by the iterator pos from the list, and returns an iterator to the next item in the list (which may be end()).
See Also▲
See also insert()
QLinkedList::iterator QLinkedList::erase(QLinkedList::iterator begin, QLinkedList::iterator end)▲
This is an overloaded function.
Removes all the items from begin up to (but not including) end.
T &QLinkedList::first()▲
Returns a reference to the first item in the list. This function assumes that the list isn't empty.
See Also▲
const T &QLinkedList::first() const▲
This is an overloaded function.
[static] QLinkedList<T> QLinkedList::fromStdList(const std::list<T> &list)▲
Returns a QLinkedList object with the data contained in list. The order of the elements in the QLinkedList is the same as in list.
Example:
std::
list&
lt;double
&
gt; stdlist;
list.push_back(1.2
);
list.push_back(0.5
);
list.push_back(3.14
);
QLinkedList&
lt;double
&
gt; list =
QLinkedList&
lt;double
&
gt;::
fromStdList(stdlist);
See Also▲
See also toStdList()
T &QLinkedList::front()▲
This function is provided for STL compatibility. It is equivalent to first().
const T &QLinkedList::front() const▲
This is an overloaded function.
QLinkedList::iterator QLinkedList::insert(QLinkedList::iterator before, const T &value)▲
Inserts value in front of the item pointed to by the iterator before. Returns an iterator pointing at the inserted item.
See Also▲
See also erase()
bool QLinkedList::isEmpty() const▲
T &QLinkedList::last()▲
Returns a reference to the last item in the list. This function assumes that the list isn't empty.
See Also▲
const T &QLinkedList::last() const▲
This is an overloaded function.
void QLinkedList::pop_back()▲
This function is provided for STL compatibility. It is equivalent to removeLast().
void QLinkedList::pop_front()▲
This function is provided for STL compatibility. It is equivalent to removeFirst().
void QLinkedList::prepend(const T &value)▲
Inserts value at the beginning of the list.
Example:
QLinkedList&
lt;QString&
gt; list;
list.prepend("one"
);
list.prepend("two"
);
list.prepend("three"
);
// list: ["three", "two", "one"]
This is the same as list.insert(begin(), value).
See Also▲
void QLinkedList::push_back(const T &value)▲
This function is provided for STL compatibility. It is equivalent to append(value).
void QLinkedList::push_front(const T &value)▲
This function is provided for STL compatibility. It is equivalent to prepend(value).
[since 5.6] QLinkedList::reverse_iterator QLinkedList::rbegin()▲
Returns a STL-style reverse iterator pointing to the first item in the list, in reverse order.
This function was introduced in Qt 5.6.
See Also▲
[since 5.6] QLinkedList::const_reverse_iterator QLinkedList::rbegin() const▲
This is an overloaded function.
This function was introduced in Qt 5.6.
int QLinkedList::removeAll(const T &value)▲
Removes all occurrences of value in the list.
Example:
QList&
lt;QString&
gt; list;
list &
lt;&
lt; "sun"
&
lt;&
lt; "cloud"
&
lt;&
lt; "sun"
&
lt;&
lt; "rain"
;
list.removeAll("sun"
);
// list: ["cloud", "rain"]
This function requires the value type to have an implementation of operator==().
See Also▲
See also insert()
void QLinkedList::removeFirst()▲
Removes the first item in the list.
This is the same as erase(begin()).
See Also▲
See also removeLast(), erase()
void QLinkedList::removeLast()▲
bool QLinkedList::removeOne(const T &value)▲
Removes the first occurrences of value in the list. Returns true on success; otherwise returns false.
Example:
QList&
lt;QString&
gt; list;
list &
lt;&
lt; "sun"
&
lt;&
lt; "cloud"
&
lt;&
lt; "sun"
&
lt;&
lt; "rain"
;
list.removeOne("sun"
);
// list: ["cloud", "sun", "rain"]
This function requires the value type to have an implementation of operator==().
See Also▲
See also insert()
[since 5.6] QLinkedList::reverse_iterator QLinkedList::rend()▲
Returns a STL-style reverse iterator pointing to one past the last item in the list, in reverse order.
This function was introduced in Qt 5.6.
See Also▲
[since 5.6] QLinkedList::const_reverse_iterator QLinkedList::rend() const▲
This is an overloaded function.
This function was introduced in Qt 5.6.
int QLinkedList::size() const▲
bool QLinkedList::startsWith(const T &value) const▲
Returns true if the list is not empty and its first item is equal to value; otherwise returns false.
See Also▲
void QLinkedList::swap(QLinkedList<T> &other)▲
Swaps list other with this list. This operation is very fast and never fails.
T QLinkedList::takeFirst()▲
Removes the first item in the list and returns it.
If you don't use the return value, removeFirst() is more efficient.
See Also▲
See also takeLast(), removeFirst()
T QLinkedList::takeLast()▲
Removes the last item in the list and returns it.
If you don't use the return value, removeLast() is more efficient.
See Also▲
See also takeFirst(), removeLast()
std::list<T> QLinkedList::toStdList() const▲
Returns a std::list object with the data contained in this QLinkedList. Example:
QLinkedList&
lt;double
&
gt; list;
list &
lt;&
lt; 1.2
&
lt;&
lt; 0.5
&
lt;&
lt; 3.14
;
std::
list&
lt;double
&
gt; stdlist =
list.toStdList();
See Also▲
See also fromStdList()
bool QLinkedList::operator!=(const QLinkedList<T> &other) const▲
Returns true if other is not equal to this list; otherwise returns false.
Two lists are considered equal if they contain the same values in the same order.
This function requires the value type to implement operator==().
See Also▲
See also operator==()
QLinkedList<T> QLinkedList::operator+(const QLinkedList<T> &other) const▲
Returns a list that contains all the items in this list followed by all the items in the other list.
See Also▲
See also operator+=()
QLinkedList<T> &QLinkedList::operator+=(const QLinkedList<T> &other)▲
Appends the items of the other list to this list and returns a reference to this list.
See Also▲
QLinkedList<T> &QLinkedList::operator+=(const T &value)▲
This is an overloaded function.
Appends value to the list.
QLinkedList<T> &QLinkedList::operator<<(const QLinkedList<T> &other)▲
Appends the items of the other list to this list and returns a reference to this list.
See Also▲
See also operator+=(), append()
QLinkedList<T> &QLinkedList::operator<<(const T &value)▲
This is an overloaded function.
Appends value to the list.
QLinkedList<T> &QLinkedList::operator=(const QLinkedList<T> &other)▲
Assigns other to this list and returns a reference to this list.
bool QLinkedList::operator==(const QLinkedList<T> &other) const▲
Returns true if other is equal to this list; otherwise returns false.
Two lists are considered equal if they contain the same values in the same order.
This function requires the value type to implement operator==().
See Also▲
See also operator!=()
Related Non-Members▲
QDataStreamIfHasOStreamOperatorsContainer<QLinkedList<T>, T> operator<<(QDataStream &out, const QLinkedList<T> &list)▲
Writes the linked list list to stream out.
This function requires the value type to implement operator<<().
See Also▲
See also Format of the QDataStream operators
QDataStreamIfHasIStreamOperatorsContainer<QLinkedList<T>, T> operator>>(QDataStream &in, QLinkedList<T> &list)▲
Reads a linked list from stream in into list.
This function requires the value type to implement operator>>().
See Also▲
See also Format of the QDataStream operators