summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools/qlist.qdoc
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/tools/qlist.qdoc')
-rw-r--r--src/corelib/tools/qlist.qdoc454
1 files changed, 273 insertions, 181 deletions
diff --git a/src/corelib/tools/qlist.qdoc b/src/corelib/tools/qlist.qdoc
index 4a36897ae2..e07b74cd53 100644
--- a/src/corelib/tools/qlist.qdoc
+++ b/src/corelib/tools/qlist.qdoc
@@ -1,29 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\class QVector
@@ -136,14 +112,14 @@
to reduce the number of reallocations by preallocating up to twice
as much memory as the actual data needs.
- If you know in advance approximately how many items the QList
- will contain, you can call reserve(), asking QList to
- preallocate a certain amount of memory. You can also call
- capacity() to find out how much memory QList actually
- allocated.
+ If you're building a QList gradually and know in advance
+ approximately how many elements it will contain, you can call reserve(),
+ asking QList to preallocate a certain amount of memory.
+ You can also call capacity() to find out how much memory the
+ QList actually has allocated.
- Note that using non-const operators and functions can cause
- QList to do a deep copy of the data. This is due to \l{implicit sharing}.
+ Note that using non-const operators and functions can cause QList
+ to do a deep copy of the data, due to \l{implicit sharing}.
QList's value type must be an \l{assignable data type}. This
covers most data types that are commonly used, but the compiler
@@ -153,20 +129,12 @@
support \c operator==(). These requirements are documented on a
per-function basis.
- Like the other container classes, QList provides \l{Java-style
- iterators} (QListIterator and QMutableListIterator) and
- \l{STL-style iterators} (QList::const_iterator and
- QList::iterator). In practice, these are rarely used, because
- you can use indexes into the QList.
+ For iterating over the items, see \l {Iterating over Containers}.
In addition to QList, Qt also provides QVarLengthArray, a very
low-level class with little functionality that is optimized for
speed.
- QList does \e not support inserting, prepending, appending or replacing
- with references to its own values. Doing so will cause your application to
- abort with an error message.
-
\section2 More Information on Using Qt Containers
For a detailed discussion comparing Qt containers with each other and
@@ -174,16 +142,16 @@
\section1 Maximum size and out-of-memory conditions
- The maximum size of QList depends on the architecture. You should be able to
- use more than 2 GB of memory and you can typically expect 2^63 bytes
- limitation in size on 64-bit systems. The actual value also depends on the
- overhead required for managing the data block, which is no more than 32
- bytes, and extra reserved space, which is 2 bytes. The number of elements
- that can be stored in a QList is this possible size divided by the size of a
- stored element.
+ The maximum size of QList depends on the architecture. Most 64-bit
+ systems can allocate more than 2 GB of memory, with a typical limit
+ of 2^63 bytes. The actual value also depends on the overhead required for
+ managing the data block. As a result, you can expect the maximum size
+ of 2 GB minus overhead on 32-bit platforms, and 2^63 bytes minus overhead
+ on 64-bit platforms. The number of elements that can be stored in a
+ QList is this maximum size divided by the size of a stored element.
- In case memory allocation fails, QList will use the \l Q_CHECK_PTR macro,
- which will throw a \c std::bad_alloc exception if the application is being
+ When memory allocation fails, QList uses the \l Q_CHECK_PTR macro,
+ which throws a \c std::bad_alloc exception if the application is being
compiled with exception support. If exceptions are disabled, then running
out of memory is undefined behavior.
@@ -279,7 +247,32 @@
\sa resize()
*/
-/*! \fn template <typename T> QList<T>::QList(qsizetype size, const T &value)
+/*! \fn template <typename T> QList<T>::QList(qsizetype size, Qt::Initialization)
+ \since 6.8
+
+ Constructs a list with an initial size of \a size elements.
+
+ QList will make an attempt at \b{not initializing} the elements.
+
+//! [qlist-uninitialized-strategy]
+ Specifically:
+
+ \list
+
+ \li if \c{T} has a constructor that accepts \c{Qt::Uninitialized},
+ that constructor will be used to initialize the elements;
+
+ \li otherwise, each element is default constructed. For
+ trivially constructible types (such as \c{int}, \c{float}, etc.)
+ this is equivalent to not initializing them.
+
+ \endlist
+//! [qlist-uninitialized-strategy]
+
+ \sa resizeForOverwrite()
+*/
+
+/*! \fn template <typename T> QList<T>::QList(qsizetype size, parameter_type value)
Constructs a list with an initial size of \a size elements.
Each element is initialized with \a value.
@@ -304,16 +297,17 @@
\since 4.8
Constructs a list from the std::initializer_list given by \a args.
-
- This constructor is only enabled if the compiler supports C++11 initializer
- lists.
*/
-/*! \fn template <typename T> template<typename InputIterator> QList<T>::QList(InputIterator first, InputIterator last)
+/*! \fn template<typename T> template <typename InputIterator, QList<T>::if_input_iterator<InputIterator> = true> QList<T>::QList(InputIterator first, InputIterator last)
\since 5.14
Constructs a list with the contents in the iterator range [\a first, \a last).
+ \note This constructor only participates in overload resolution if
+ \c InputIterator meets the requirements of a
+ \l {https://en.cppreference.com/w/cpp/named_req/InputIterator} {LegacyInputIterator}.
+
The value type of \c InputIterator must be convertible to \c T.
*/
@@ -338,13 +332,9 @@
/*!
\fn template <typename T> QList<T> &QList<T>::operator=(std::initializer_list<T> args)
+ \since 5.14
Assigns the collection of values in \a args to this QList instance.
-
- This operator is only enabled if the compiler supports C++11 initializer
- lists.
-
- \since 5.14
*/
/*! \fn template <typename T> void QList<T>::swap(QList<T> &other)
@@ -391,49 +381,45 @@
\sa operator==()
*/
-/*! \fn template <typename T> bool operator<(const QList<T> &lhs, const QList<T> &rhs)
+/*! \fn template <typename T> bool QList<T>::operator<(const QList<T> &other) const
\since 5.6
- \relates QList
- Returns \c true if list \a lhs is
+ Returns \c true if this list is
\l{http://en.cppreference.com/w/cpp/algorithm/lexicographical_compare}
- {lexicographically less than} \a rhs; otherwise returns \c false.
+ {lexically less than} \a other; otherwise returns \c false.
This function requires the value type to have an implementation
of \c operator<().
*/
-/*! \fn template <typename T> bool operator<=(const QList<T> &lhs, const QList<T> &rhs)
+/*! \fn template <typename T> bool QList<T>::operator<=(const QList<T> &other) const
\since 5.6
- \relates QList
- Returns \c true if list \a lhs is
+ Returns \c true if this list is
\l{http://en.cppreference.com/w/cpp/algorithm/lexicographical_compare}
- {lexicographically less than or equal to} \a rhs; otherwise returns \c false.
+ {lexically less than or equal to} \a other; otherwise returns \c false.
This function requires the value type to have an implementation
of \c operator<().
*/
-/*! \fn template <typename T> bool operator>(const QList<T> &lhs, const QList<T> &rhs)
+/*! \fn template <typename T> bool QList<T>::operator>(const QList<T> &other) const
\since 5.6
- \relates QList
- Returns \c true if list \a lhs is
+ Returns \c true if this list is
\l{http://en.cppreference.com/w/cpp/algorithm/lexicographical_compare}
- {lexicographically greater than} \a rhs; otherwise returns \c false.
+ {lexically greater than} \a other; otherwise returns \c false.
This function requires the value type to have an implementation
of \c operator<().
*/
-/*! \fn template <typename T> bool operator>=(const QList<T> &lhs, const QList<T> &rhs)
+/*! \fn template <typename T> bool QList<T>::operator>=(const QList<T> &other) const
\since 5.6
- \relates QList
- Returns \c true if list \a lhs is
+ Returns \c true if this list is
\l{http://en.cppreference.com/w/cpp/algorithm/lexicographical_compare}
- {lexicographically greater than or equal to} \a rhs; otherwise returns \c false.
+ {lexically greater than or equal to} \a other; otherwise returns \c false.
This function requires the value type to have an implementation
of \c operator<().
@@ -465,18 +451,35 @@
*/
/*! \fn template <typename T> void QList<T>::resize(qsizetype size)
+ \fn template <typename T> void QList<T>::resize(qsizetype size, parameter_type c)
+ \since 6.0
Sets the size of the list to \a size. If \a size is greater than the
current size, elements are added to the end; the new elements are
- initialized with a \l{default-constructed value}. If \a size is less
- than the current size, elements are removed from the end.
+ initialized with either a \l{default-constructed value} or \a c. If \a size
+ is less than the current size, elements are removed from the end.
+
+ If this list is not shared, the capacity() is preserved. Use squeeze()
+ to shed excess capacity.
- Since Qt 5.6, resize() doesn't shrink the capacity anymore.
- To shed excess capacity, use squeeze().
+ \note In Qt versions prior to 5.7 (for QVector; QList lacked a resize()
+ until 6.0), this function released the memory used by the list instead of
+ preserving the capacity.
\sa size()
*/
+/*! \fn template <typename T> void QList<T>::resizeForOverwrite(qsizetype size)
+ \since 6.8
+
+ Sets the size of the list to \a size. If \a size is less than the
+ current size, elements are removed from the end. If \a size is
+ greater than the current size, elements are added to the end; QList
+ will make an attempt at \b{not initializing} these new elements.
+
+ \include qlist.qdoc qlist-uninitialized-strategy
+*/
+
/*! \fn template <typename T> qsizetype QList<T>::capacity() const
Returns the maximum number of items that can be stored in the
@@ -490,36 +493,35 @@
\note a statically allocated list will report a capacity of 0,
even if it's not empty.
- \note The free space position in the allocated memory block is undefined. In
- other words, one should not assume that the free memory is always located
- after the initialized elements.
+ \warning The free space position in the allocated memory block is undefined.
+ In other words, you should not assume that the free memory is always located
+ at the end of the list. You can call reserve() to ensure that there is
+ enough space at the end.
\sa reserve(), squeeze()
*/
/*! \fn template <typename T> void QList<T>::reserve(qsizetype size)
- Attempts to allocate memory for at least \a size elements. If you
- know in advance how large the list will be, you should call this
- function to prevent reallocations and memory fragmentation.
+ Attempts to allocate memory for at least \a size elements.
- If \a size is an underestimate, the worst that will happen is that
- the QList will be a bit slower. If \a size is an overestimate, you
- may have used more memory than the normal QList growth strategy
- would have allocated—or you may have used less.
+ If you know in advance how large the list will be, you should call this
+ function to prevent reallocations and memory fragmentation. If you resize
+ the list often, you are also likely to get better performance.
- An alternative to reserve() is calling resize(). Whether or not that is
- faster than reserve() depends on the element type, because resize()
- default-constructs all elements, and requires assignment to existing
- entries rather than calling append(), which copy- or move-constructs.
- For simple types, like \c int or \c double, resize() is typically faster,
- but for anything more complex, you should prefer reserve().
+ If in doubt about how much space shall be needed, it is usually better to
+ use an upper bound as \a size, or a high estimate of the most likely size,
+ if a strict upper bound would be much bigger than this. If \a size is an
+ underestimate, the list will grow as needed once the reserved size is
+ exceeded, which may lead to a larger allocation than your best overestimate
+ would have and will slow the operation that triggers it.
- \warning If the size passed to resize() was underestimated, you run out
- of allocated space and into undefined behavior. This problem does not
- exist with reserve(), because it treats the size as just a hint.
+ \warning reserve() reserves memory but does not change the size of the
+ list. Accessing data beyond the current end of the list is
+ undefined behavior. If you need to access memory beyond the current end of
+ the list, use resize().
- \sa squeeze(), capacity()
+ \sa squeeze(), capacity(), resize()
*/
/*! \fn template <typename T> void QList<T>::squeeze()
@@ -593,17 +595,14 @@
Removes all the elements from the list.
- \note Until Qt 5.6, this also released the memory used by
- the list. From Qt 5.7, the capacity is preserved. To shed
- all capacity, swap with a default-constructed list:
- \code
- QList<T> l ...;
- QList<T>().swap(l);
- Q_ASSERT(l.capacity() == 0);
- \endcode
- or call squeeze().
+ If this list is not shared, the capacity() is preserved. Use squeeze() to
+ shed excess capacity.
+
+ \note In Qt versions prior to 5.7 (for QVector) and 6.0 (for QList), this
+ function released the memory used by the list instead of preserving the
+ capacity.
- \sa squeeze()
+ \sa resize(), squeeze()
*/
/*! \fn template <typename T> const T &QList<T>::at(qsizetype i) const
@@ -637,7 +636,7 @@
*/
/*!
- \fn template <typename T> void QList<T>::append(const_reference value)
+ \fn template <typename T> void QList<T>::append(parameter_type value)
Inserts \a value at the end of the list.
@@ -686,7 +685,7 @@
*/
/*!
- \fn template <typename T> void QList<T>::prepend(const T &value)
+ \fn template <typename T> void QList<T>::prepend(parameter_type value)
\fn template <typename T> void QList<T>::prepend(rvalue_ref value)
Inserts \a value at the beginning of the list.
@@ -696,11 +695,12 @@
This is the same as list.insert(0, \a value).
- For large lists, this operation can be slow (\l{linear time}),
- because it requires moving all the items in the list by one
- position further in memory. If you want a container class that
- provides a fast prepend operation, use std::list
- instead.
+ Normally this operation is relatively fast (amortized \l{constant time}).
+ QList is able to allocate extra memory at the beginning of the list data
+ and grow in that direction without reallocating or moving the data on each
+ operation. However if you want a container class with a guarantee of
+ \l{constant time} prepend, use std::list instead,
+ but prefer QList otherwise.
\sa append(), insert()
*/
@@ -785,7 +785,7 @@
Example:
\snippet code/src_corelib_tools_qlist.cpp emplace
- \note It is garanteed that the element will be created in place
+ \note It is guaranteed that the element will be created in place
at the beginning, but after that it might be copied or
moved to the right position.
@@ -793,7 +793,7 @@
*/
-/*! \fn template <typename T> void QList<T>::replace(qsizetype i, const T &value)
+/*! \fn template <typename T> void QList<T>::replace(qsizetype i, parameter_type value)
\fn template <typename T> void QList<T>::replace(qsizetype i, rvalue_ref value)
Replaces the item at index position \a i with \a value.
@@ -808,15 +808,15 @@
Removes \a n elements from the list, starting at index position \a i.
- If too many elements are removed from the list, the list may shrink the
- capacity to reduce the allocated memory size. To make sure this does not
- happen, use reserve() to give a hint to the list that the capacity should be
- preserved.
+//! [shrinking-erase]
+ Element removal will preserve the list's capacity and not reduce the amount of
+ allocated memory. To shed extra capacity and free as much memory as possible,
+ call squeeze().
+//! [shrinking-erase]
//! [iterator-invalidation-erase]
- \note When QList is not \l{implicitly shared} and the capacity is reserved
- with a call to reserve(), this function only invalidates iterators at or
- after the specified position.
+ \note When QList is not \l{implicitly shared}, this function only
+ invalidates iterators at or after the specified position.
//! [iterator-invalidation-erase]
\sa insert(), replace(), fill()
@@ -831,26 +831,40 @@
remove(i);
\endcode
+ \include qlist.qdoc shrinking-erase
\include qlist.qdoc iterator-invalidation-erase
\sa remove()
*/
-/*! \fn template <typename T> template <typename AT> qsizetype QList<T>::removeAll(const AT &t)
+/*! \fn template <typename T> template <typename AT = T> qsizetype QList<T>::removeAll(const AT &t)
\since 5.4
Removes all elements that compare equal to \a t from the
list. Returns the number of elements removed, if any.
+ \include qlist.qdoc shrinking-erase
+
\sa removeOne()
*/
-/*! \fn template <typename T> template <typename AT> bool QList<T>::removeOne(const AT &t)
+/*! \fn template <typename T> template <typename AT = T> bool QList<T>::removeOne(const AT &t)
\since 5.4
Removes the first element that compares equal to \a t from the
list. Returns whether an element was, in fact, removed.
+ \include qlist.qdoc shrinking-erase
+
+ \sa removeAll()
+*/
+
+/*! \fn template <typename T> template <typename Predicate> qsizetype QList<T>::removeIf(Predicate pred)
+ \since 6.1
+
+ Removes all elements for which the predicate \a pred returns true
+ from the list. Returns the number of elements removed, if any.
+
\sa removeAll()
*/
@@ -874,6 +888,8 @@
return t;
\endcode
+ \include qlist.qdoc iterator-invalidation-erase
+
\sa takeFirst(), takeLast()
*/
@@ -881,8 +897,6 @@
\since 5.6
Moves the item at index position \a from to index position \a to.
-
- \sa QList::move()
*/
/*! \fn template <typename T> void QList<T>::removeFirst()
@@ -892,6 +906,8 @@
the list can be empty, call isEmpty() before calling this
function.
+ \include qlist.qdoc shrinking-erase
+
\sa remove(), takeFirst(), isEmpty()
*/
@@ -902,6 +918,8 @@
empty. If the list can be empty, call isEmpty() before calling
this function.
+ \include qlist.qdoc shrinking-erase
+
\sa remove(), takeLast(), removeFirst(), isEmpty()
*/
@@ -943,8 +961,7 @@
/*! \fn template <typename T> QList<T> &QList<T>::fill(parameter_type value, qsizetype size = -1)
Assigns \a value to all items in the list. If \a size is
- different from -1 (the default), the list is resized to size \a
- size beforehand.
+ different from -1 (the default), the list is resized to \a size beforehand.
Example:
\snippet code/src_corelib_tools_qlist.cpp 11
@@ -952,7 +969,7 @@
\sa resize()
*/
-/*! \fn template <typename T> qsizetype QList<T>::indexOf(const T &value, qsizetype from = 0) const
+/*! \fn template <typename T> template <typename AT = T> qsizetype QList<T>::indexOf(const AT &value, qsizetype from = 0) const
Returns the index position of the first occurrence of \a value in
the list, searching forward from index position \a from.
@@ -967,7 +984,7 @@
\sa lastIndexOf(), contains()
*/
-/*! \fn template <typename T> qsizetype QList<T>::lastIndexOf(const T &value, qsizetype from = -1) const
+/*! \fn template <typename T> template <typename AT = T> qsizetype QList<T>::lastIndexOf(const AT &value, qsizetype from = -1) const
Returns the index position of the last occurrence of the value \a
value in the list, searching backward from index position \a
@@ -983,7 +1000,7 @@
\sa indexOf()
*/
-/*! \fn template <typename T> bool QList<T>::contains(const T &value) const
+/*! \fn template <typename T> template <typename AT = T> bool QList<T>::contains(const AT &value) const
Returns \c true if the list contains an occurrence of \a value;
otherwise returns \c false.
@@ -994,7 +1011,7 @@
\sa indexOf(), count()
*/
-/*! \fn template <typename T> bool QList<T>::startsWith(const T &value) const
+/*! \fn template <typename T> bool QList<T>::startsWith(parameter_type value) const
\since 4.5
Returns \c true if this list is not empty and its first
@@ -1003,7 +1020,7 @@
\sa isEmpty(), first()
*/
-/*! \fn template <typename T> bool QList<T>::endsWith(const T &value) const
+/*! \fn template <typename T> bool QList<T>::endsWith(parameter_type value) const
\since 4.5
Returns \c true if this list is not empty and its last
@@ -1013,7 +1030,7 @@
*/
-/*! \fn template <typename T> qsizetype QList<T>::count(const T &value) const
+/*! \fn template <typename T> template <typename AT = T> qsizetype QList<T>::count(const AT &value) const
Returns the number of occurrences of \a value in the list.
@@ -1051,8 +1068,8 @@
/*! \fn template <typename T> QList<T>::const_iterator QList<T>::cbegin() const
\since 5.0
- Returns a const \l{STL-style iterators}{STL-style iterator} pointing to the first item
- in the list.
+ Returns a const \l{STL-style iterators}{STL-style iterator} pointing to the
+ first item in the list.
\include qlist.qdoc iterator-invalidation-func-desc
@@ -1061,8 +1078,8 @@
/*! \fn template <typename T> QList<T>::const_iterator QList<T>::constBegin() const
- Returns a const \l{STL-style iterators}{STL-style iterator} pointing to the first item
- in the list.
+ Returns a const \l{STL-style iterators}{STL-style iterator} pointing to the
+ first item in the list.
\include qlist.qdoc iterator-invalidation-func-desc
@@ -1071,8 +1088,8 @@
/*! \fn template <typename T> QList<T>::iterator QList<T>::end()
- Returns an \l{STL-style iterators}{STL-style iterator} pointing to the imaginary item
- after the last item in the list.
+ Returns an \l{STL-style iterators}{STL-style iterator} pointing just after
+ the last item in the list.
\include qlist.qdoc iterator-invalidation-func-desc
@@ -1087,8 +1104,8 @@
/*! \fn template <typename T> QList<T>::const_iterator QList<T>::cend() const
\since 5.0
- Returns a const \l{STL-style iterators}{STL-style iterator} pointing to the imaginary
- item after the last item in the list.
+ Returns a const \l{STL-style iterators}{STL-style iterator} pointing just
+ after the last item in the list.
\include qlist.qdoc iterator-invalidation-func-desc
@@ -1097,8 +1114,8 @@
/*! \fn template <typename T> QList<T>::const_iterator QList<T>::constEnd() const
- Returns a const \l{STL-style iterators}{STL-style iterator} pointing to the imaginary
- item after the last item in the list.
+ Returns a const \l{STL-style iterators}{STL-style iterator} pointing just
+ after the last item in the list.
\include qlist.qdoc iterator-invalidation-func-desc
@@ -1108,8 +1125,8 @@
/*! \fn template <typename T> QList<T>::reverse_iterator QList<T>::rbegin()
\since 5.6
- Returns a \l{STL-style iterators}{STL-style} reverse iterator pointing to the first
- item in the list, in reverse order.
+ Returns a \l{STL-style iterators}{STL-style} reverse iterator pointing to
+ the first item in the list, in reverse order.
\include qlist.qdoc iterator-invalidation-func-desc
@@ -1124,8 +1141,8 @@
/*! \fn template <typename T> QList<T>::const_reverse_iterator QList<T>::crbegin() const
\since 5.6
- Returns a const \l{STL-style iterators}{STL-style} reverse iterator pointing to the first
- item in the list, in reverse order.
+ Returns a const \l{STL-style iterators}{STL-style} reverse iterator pointing
+ to the first item in the list, in reverse order.
\include qlist.qdoc iterator-invalidation-func-desc
@@ -1135,8 +1152,8 @@
/*! \fn template <typename T> QList<T>::reverse_iterator QList<T>::rend()
\since 5.6
- Returns a \l{STL-style iterators}{STL-style} reverse iterator pointing to one past
- the last item in the list, in reverse order.
+ Returns a \l{STL-style iterators}{STL-style} reverse iterator pointing just
+ after the last item in the list, in reverse order.
\include qlist.qdoc iterator-invalidation-func-desc
@@ -1151,8 +1168,8 @@
/*! \fn template <typename T> QList<T>::const_reverse_iterator QList<T>::crend() const
\since 5.6
- Returns a const \l{STL-style iterators}{STL-style} reverse iterator pointing to one
- past the last item in the list, in reverse order.
+ Returns a const \l{STL-style iterators}{STL-style} reverse iterator pointing
+ just after the last item in the list, in reverse order.
\include qlist.qdoc iterator-invalidation-func-desc
@@ -1165,6 +1182,7 @@
list, and returns an iterator to the next item in the list
(which may be end()).
+ \include qlist.qdoc shrinking-erase
\include qlist.qdoc iterator-invalidation-erase
\sa insert(), remove()
@@ -1178,6 +1196,7 @@
end. Returns an iterator to the same item that \a end referred to
before the call.
+ \include qlist.qdoc shrinking-erase
\include qlist.qdoc iterator-invalidation-erase
*/
@@ -1236,14 +1255,14 @@
\sa at(), operator[]()
*/
-/*! \fn template <typename T> T QList<T>::value(qsizetype i, const T &defaultValue) const
+/*! \fn template <typename T> T QList<T>::value(qsizetype i, parameter_type defaultValue) const
\overload
If the index \a i is out of bounds, the function returns \a defaultValue.
*/
-/*! \fn template <typename T> void QList<T>::push_back(const T &value)
+/*! \fn template <typename T> void QList<T>::push_back(parameter_type value)
This function is provided for STL compatibility. It is equivalent
to append(\a value).
@@ -1255,7 +1274,7 @@
*/
/*!
- \fn template <typename T> void QList<T>::push_front(const T &value)
+ \fn template <typename T> void QList<T>::push_front(parameter_type value)
\fn template <typename T> void QList<T>::push_front(rvalue_ref value)
This function is provided for STL compatibility. It is equivalent
@@ -1310,6 +1329,15 @@
returns \c false.
*/
+/*! \fn template <typename T> qsizetype QList<T>::max_size()
+ \since 6.8
+
+ This function is provided for STL compatibility.
+ It returns the maximum number of elements that the list can
+ theoretically hold. In practice, the number can be much smaller,
+ limited by the amount of memory available to the system.
+*/
+
/*! \fn template <typename T> QList<T> &QList<T>::operator+=(const QList<T> &other)
Appends the items of the \a other list to this list and
@@ -1326,7 +1354,7 @@
\sa operator+(), append()
*/
-/*! \fn template <typename T> void QList<T>::operator+=(const T &value)
+/*! \fn template <typename T> void QList<T>::operator+=(parameter_type value)
\overload
@@ -1343,7 +1371,11 @@
\sa append(), operator<<()
*/
-/*! \fn template <typename T> QList<T> QList<T>::operator+(const QList<T> &other) const
+/*!
+ \fn template <typename T> QList<T> QList<T>::operator+(const QList<T> &other) const &
+ \fn template <typename T> QList<T> QList<T>::operator+(const QList<T> &other) &&
+ \fn template <typename T> QList<T> QList<T>::operator+(QList<T> &&other) const &
+ \fn template <typename T> QList<T> QList<T>::operator+(QList<T> &&other) &&
Returns a list that contains all the items in this list
followed by all the items in the \a other list.
@@ -1351,15 +1383,7 @@
\sa operator+=()
*/
-/*! \fn template <typename T> QList<T> QList<T>::operator+(QList<T> &&other) const
- \since 6.0
-
- \overload
-
- \sa operator+=()
-*/
-
-/*! \fn template <typename T> QList<T> &QList<T>::operator<<(const T &value)
+/*! \fn template <typename T> QList<T> &QList<T>::operator<<(parameter_type value)
Appends \a value to the list and returns a reference to this list.
@@ -1386,10 +1410,9 @@
\overload
*/
-/*! \typedef QList::iterator
-
- The QList::iterator typedef provides an STL-style non-const
- iterator for QList and QStack.
+/*! \class QList::iterator
+ \inmodule QtCore
+ \brief Provides an STL-style non-const iterator for QList and QStack.
QList provides both \l{STL-style iterators} and \l{Java-style
iterators}.
@@ -1408,10 +1431,9 @@
\sa QList::begin(), QList::end(), QList::const_iterator, QMutableListIterator
*/
-/*! \typedef QList::const_iterator
-
- The QList::const_iterator typedef provides an STL-style const
- iterator for QList and QStack.
+/*! \class QList::const_iterator
+ \inmodule QtCore
+ \brief Provides an STL-style const iterator for QList and QStack.
QList provides both \l{STL-style iterators} and \l{Java-style
iterators}.
@@ -1498,7 +1520,7 @@
/*! \fn template <typename T> QList<T> QList<T>::toList() const
\fn template <typename T> QList<T> QList<T>::toVector() const
- \obsolete
+ \deprecated
A no-op in Qt 6. Provided for backwards compatibility with
Qt 5, where QList and QVector where two different types.
@@ -1508,7 +1530,7 @@
/*! \fn template <typename T> QList<T> QList<T>::fromList(const QList<T> &list)
\fn template <typename T> QList<T> QList<T>::fromVector(const QList<T> &list)
- \obsolete
+ \deprecated
A no-op in Qt 6. Provided for backwards compatibility with
Qt 5, where QList and QVector were two different types.
@@ -1535,3 +1557,73 @@
\sa{Serializing Qt Data Types}{Format of the QDataStream operators}
*/
+
+/*! \fn template <typename T, typename AT> qsizetype erase(QList<T> &list, const AT &t)
+ \relates QList
+ \since 6.1
+
+ Removes all elements that compare equal to \a t from the
+ list \a list. Returns the number of elements removed, if any.
+
+ \note Unlike QList::removeAll, \a t is not allowed to be a
+ reference to an element inside \a list. If you cannot be sure that
+ this is not the case, take a copy of \a t and call this function
+ with the copy.
+
+ \sa QList::removeAll(), erase_if
+*/
+
+/*! \fn template <typename T, typename Predicate> qsizetype erase_if(QList<T> &list, Predicate pred)
+ \relates QList
+ \since 6.1
+
+ Removes all elements for which the predicate \a pred returns true
+ from the list \a list. Returns the number of elements removed, if
+ any.
+
+ \sa erase
+*/
+
+/*! \fn template <typename T> QList<T>& QList<T>::assign(qsizetype n, parameter_type t)
+ \since 6.6
+
+ Replaces the contents of this list with \a n copies of \a t.
+
+ The size of this list will be equal to \a n.
+
+ This function will only allocate memory if \a n exceeds the capacity of the
+ list or this list is shared.
+*/
+
+/*! \fn template <typename T> template <typename InputIterator, QList<T>::if_input_iterator<InputIterator>> QList<T>& QList<T>::assign(InputIterator first, InputIterator last)
+ \since 6.6
+
+ Replaces the contents of this list with a copy of the elements in the
+ iterator range [\a first, \a last).
+
+ The size of this list will be equal to the number of elements in the
+ range [\a first, \a last).
+
+ This function will only allocate memory if the number of elements in the
+ range exceeds the capacity of this list or this list is shared.
+
+ \note This function overload only participates in overload resolution if
+ \c InputIterator meets the requirements of a
+ \l {https://en.cppreference.com/w/cpp/named_req/InputIterator} {LegacyInputIterator}.
+
+ \note The behavior is undefined if either argument is an iterator into
+ *this.
+*/
+
+/*! \fn template <typename T> QList<T>& QList<T>::assign(std::initializer_list<T> l)
+ \since 6.6
+
+ Replaces the contents of this list with a copy of the elements of
+ \a l.
+
+ The size of this list will be equal to the number of elements in
+ \a l.
+
+ This function only allocates memory if the number of elements in \a l
+ exceeds the capacity of this list or this list is shared.
+*/