QList 类

template <typename T> class QList

QList 类是提供动态数组的模板类。 更多...

头: #include <QList>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
继承者: QBluetoothServiceInfo::Alternative , QBluetoothServiceInfo::Sequence , QByteArrayList , QItemSelection , QMqttUserProperties , QNdefMessage , QPolygon , QPolygonF , QQueue , QSignalSpy , QStack , QStringList , QTestEventList , QVector , QVulkanInfoVector ,和 QXmlStreamAttributes

注意: 此类的所有函数 可重入 .

公共类型

class const_iterator
class iterator
  ConstIterator
  Iterator
  const_pointer
  const_reference
  const_reverse_iterator
  difference_type
  parameter_type
  pointer
  reference
  reverse_iterator
  rvalue_ref
  size_type
  value_type

公共函数

  QList (const QList<T> & other )
  QList (QList<T> && other )
  QList (InputIterator first , InputIterator last )
  QList (std::initializer_list<T> args )
  QList (qsizetype size , QList::parameter_type value )
  QList (qsizetype size )
  QList ()
QList<T> & operator= (QList<T> && other )
QList<T> & operator= (const QList<T> & other )
  ~QList ()
void append (QList::parameter_type value )
void append (QList::rvalue_ref value )
void append (const QList<T> & value )
void append (QList<T> && value )
QList::const_reference at (qsizetype i ) const
QList::reference back ()
QList::const_reference back () const
QList::iterator begin ()
QList::const_iterator begin () const
qsizetype capacity () const
QList::const_iterator cbegin () const
QList::const_iterator cend () const
void clear ()
QList::const_iterator constBegin () const
QList::const_pointer constData () const
QList::const_iterator constEnd () const
const T & constFirst () const
const T & constLast () const
bool contains (const AT & value ) const
qsizetype count (const AT & value ) const
qsizetype count () const
QList::const_reverse_iterator crbegin () const
QList::const_reverse_iterator crend () const
QList::pointer data ()
QList::const_pointer data () const
QList::iterator emplace (qsizetype i , Args &&... args )
QList::iterator emplace (QList::const_iterator before , Args &&... args )
QList::reference emplaceBack (Args &&... args )
QList::reference emplace_back (Args &&... args )
bool empty () const
QList::iterator end ()
QList::const_iterator end () const
bool endsWith (QList::parameter_type value ) const
QList::iterator erase (QList::const_iterator pos )
QList::iterator erase (QList::const_iterator begin , QList::const_iterator end )
QList<T> & fill (QList::parameter_type value , qsizetype size = -1)
T & first ()
const T & first () const
QList<T> first (qsizetype n ) const
QList::reference front ()
QList::const_reference front () const
qsizetype indexOf (const AT & value , qsizetype from = 0) const
QList::iterator insert (qsizetype i , QList::parameter_type value )
QList::iterator insert (qsizetype i , qsizetype count , QList::parameter_type value )
QList::iterator insert (QList::const_iterator before , QList::parameter_type value )
QList::iterator insert (QList::const_iterator before , qsizetype count , QList::parameter_type value )
QList::iterator insert (QList::const_iterator before , QList::rvalue_ref value )
QList::iterator insert (qsizetype i , QList::rvalue_ref value )
bool isEmpty () const
T & last ()
const T & last () const
QList<T> last (qsizetype n ) const
qsizetype lastIndexOf (const AT & value , qsizetype from = -1) const
qsizetype length () const
QList<T> mid (qsizetype pos , qsizetype length = -1) const
void move (qsizetype from , qsizetype to )
void pop_back ()
void pop_front ()
void prepend (QList::rvalue_ref value )
void prepend (QList::parameter_type value )
void push_back (QList::parameter_type value )
void push_back (QList::rvalue_ref value )
void push_front (QList::rvalue_ref value )
void push_front (QList::parameter_type value )
QList::reverse_iterator rbegin ()
QList::const_reverse_iterator rbegin () const
void remove (qsizetype i , qsizetype n = 1)
qsizetype removeAll (const AT & t )
void removeAt (qsizetype i )
void removeFirst ()
qsizetype removeIf (Predicate pred )
void removeLast ()
bool removeOne (const AT & t )
QList::reverse_iterator rend ()
QList::const_reverse_iterator rend () const
void replace (qsizetype i , QList::parameter_type value )
void replace (qsizetype i , QList::rvalue_ref value )
void reserve (qsizetype size )
void resize (qsizetype size )
void shrink_to_fit ()
qsizetype size () const
QList<T> sliced (qsizetype pos , qsizetype n ) const
QList<T> sliced (qsizetype pos ) const
void squeeze ()
bool startsWith (QList::parameter_type value ) const
void swap (QList<T> & other )
void swapItemsAt (qsizetype i , qsizetype j )
T takeAt (qsizetype i )
QList::value_type takeFirst ()
QList::value_type takeLast ()
T value (qsizetype i ) const
T value (qsizetype i , QList::parameter_type defaultValue ) const
bool operator!= (const QList<T> & other ) const
QList<T> operator+ (const QList<T> & other ) const
QList<T> operator+ (QList<T> && other ) const
QList<T> & operator+= (const QList<T> & other )
QList<T> & operator+= (QList<T> && other )
QList<T> & operator+= (QList::parameter_type value )
QList<T> & operator+= (QList::rvalue_ref value )
bool operator< (const QList<T> & other ) const
QList<T> & operator<< (QList::parameter_type value )
QList<T> & operator<< (const QList<T> & other )
QList<T> & operator<< (QList<T> && other )
QList<T> & operator<< (QList::rvalue_ref value )
bool operator<= (const QList<T> & other ) const
QList<T> & operator= (std::initializer_list<T> args )
bool operator== (const QList<T> & other ) const
bool operator> (const QList<T> & other ) const
bool operator>= (const QList<T> & other ) const
QList::reference operator[] (qsizetype i )
QList::const_reference operator[] (qsizetype i ) const
qsizetype erase (QList<T> & list , const AT & t )
qsizetype erase_if (QList<T> & list , Predicate pred )
size_t qHash (const QList<T> & key , size_t seed = 0)
QDataStream & operator<< (QDataStream & out , const QList<T> & list )
QDataStream & operator>> (QDataStream & in , QList<T> & list )

详细描述

QList 是一种 Qt 一般 容器类 。它将项存储在相邻内存位置,并提供基于索引的快速访问。 QVector <T> 在 Qt 5 中用于不同类,但现在是简单 QList 别名。

QList<T> 和 QVarLengthArray <T> 提供类似 API 和功能。它们经常可互换,但有性能后果。这里是用例概述:

  • QList 应该是您的默认第一抉择。
  • QVarLengthArray provides an array that reserves space on the stack, but can dynamically grow onto the heap if required. It's good to use for short lived containers that are usually small.
  • If you need a real linked list, which guarantees 常量时间 insertions mid-list and uses iterators to items rather than indexes, use std::list.

注意: QList 和 QVarLengthArray 两者均保证兼容 C 数组布局。

注意: QList in Qt 5 did not always have a C-compatible array layout and we often recommended to use QVector instead for more predictable performance. This is not the case in Qt 6 anymore, where both classes now share an implementation and can be used interchangeably.

Here's an example of a QList that stores integers and a QList that stores QString 值:

QList<int> integerList;
QList<QString> stringList;
					

QList stores its items in an array of continuous memory. Typically, lists are created with an initial size. For example, the following code constructs a QList with 200 elements:

QList<QString> list(200);
					

The elements are automatically initialized with a 默认构造值 . If you want to initialize the list with a different value, pass that value as the second argument to the constructor:

QList<QString> list(200, "Pass");
					

You can also call fill () at any time to fill the list with a value.

QList uses 0-based indexes, just like C++ arrays. To access the item at a particular index position, you can use operator[](). On non-const lists, operator[]() returns a reference to the item that can be used on the left side of an assignment:

if (list[0] == "Liz")
    list[0] = "Elizabeth";
					

For read-only access, an alternative syntax is to use at ():

for (qsizetype i = 0; i < list.size(); ++i) {
    if (list.at(i) == "Alfonso")
        cout << "Found Alfonso at position " << i << Qt::endl;
}
					

at () can be faster than operator[](), because it never causes a 深拷贝 的出现。

Another way to access the data stored in a QList is to call data (). The function returns a pointer to the first item in the list. You can use the pointer to directly access and modify the elements stored in the list. The pointer is also useful if you need to pass a QList to a function that accepts a plain C++ array.

If you want to find all occurrences of a particular value in a list, use indexOf () 或 lastIndexOf (). The former searches forward starting from a given index position, the latter searches backward. Both return the index of the matching item if they found one; otherwise, they return -1. For example:

qsizetype i = list.indexOf("Harumi");
if (i != -1)
    cout << "First occurrence of Harumi is at position " << i << Qt::endl;
					

If you simply want to check whether a list contains a particular value, use contains (). If you want to find out how many times a particular value occurs in the list, use count ().

QList provides these basic functions to add, move, and remove items: insert (), replace (), remove (), prepend (), append (). With the exception of append (), prepend () 和 replace (), these functions can be slow ( 线性时间 ) for large lists, because they require moving many items in the list by one position in memory. If you want a container class that provides fast insertion/removal in the middle, use std::list instead.

Unlike plain C++ arrays, QLists can be resized at any time by calling resize (). If the new size is larger than the old size, QList might need to reallocate the whole list. QList tries to reduce the number of reallocations by preallocating up to twice as much memory as the actual data needs.

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, due to 隐式共享 .

QList's value type must be an 可赋值数据类型 . 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, indexOf () 和 lastIndexOf () expect the value type to support operator==() . These requirements are documented on a per-function basis.

Like the other container classes, QList provides Java 风格迭代器 ( QListIterator and QMutableListIterator ) and STL 样式迭代器 ( QList::const_iterator and QList::iterator ). In practice, iterators are handy when working with generic algorithms provided by Qt and the C++ standard library. Java 风格迭代器 are provided for backwards compatibility, prefer STL 样式迭代器 when writing C++ code.

注意: Iterators over a QList, and references to individual elements within one, cannot be relied on to remain valid when any non-const method of the QList is called. Accessing such an iterator or reference after the call to a non-const method leads to undefined behavior. When stability for iterator-like functionality is required, you should use indexes instead of iterators as they are not tied to QList's internal state and thus do not get invalidated.

除 QList 外,Qt 还提供 QVarLengthArray ,具有小的功能速度优化的很低级类。

有关使用 Qt 容器的更多信息

有关比较 Qt 各种容器和 STL 容器的详细讨论,见 理解 Qt 容器 .

最大尺寸和内存不足情况

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.

When memory allocation fails, QList uses the Q_CHECK_PTR macro, which throws a 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.

Note that the operating system may impose further limits on applications holding a lot of allocated memory, especially large, contiguous blocks. Such considerations, the configuration of such behavior or any mitigation are outside the scope of the Qt API.

成员类型文档编制

[alias] QList:: ConstIterator

Qt 样式同义词 QList::const_iterator .

[alias] QList:: Iterator

Qt 样式同义词 QList::iterator .

[alias] QList:: const_pointer

为兼容 STL 而提供。

[alias] QList:: const_reference

为兼容 STL 而提供。

[alias, since 5.6] QList:: const_reverse_iterator

The QList::const_reverse_iterator typedef provides an STL-style const reverse iterator for QList .

警告: 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 隐式共享迭代器问题 .

警告: Iterators are invalidated when QList is modified. Consider that all iterators are invalidated by default. Exceptions to this rule are explicitly documented.

该 typedef 在 Qt 5.6 引入。

另请参阅 QList::rbegin (), QList::rend (), QList::reverse_iterator ,和 QList::const_iterator .

[alias] QList:: difference_type

为兼容 STL 而提供。

[alias] QList:: parameter_type

[alias] QList:: pointer

为兼容 STL 而提供。

[alias] QList:: reference

为兼容 STL 而提供。

[alias, since 5.6] QList:: reverse_iterator

The QList::reverse_iterator typedef provides an STL-style non-const reverse iterator for QList .

警告: 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 隐式共享迭代器问题 .

警告: Iterators are invalidated when QList is modified. Consider that all iterators are invalidated by default. Exceptions to this rule are explicitly documented.

该 typedef 在 Qt 5.6 引入。

另请参阅 QList::rbegin (), QList::rend (), QList::const_reverse_iterator ,和 QList::iterator .

[alias] QList:: rvalue_ref

[alias] QList:: size_type

为兼容 STL 而提供。

[alias] QList:: value_type

为兼容 STL 而提供。

成员函数文档编制

void QList:: push_front ( QList::parameter_type value )

void QList:: push_front ( QList::rvalue_ref value )

This function is provided for STL compatibility. It is equivalent to prepend( value ).

void QList:: replace ( qsizetype i , QList::parameter_type value )

void QList:: replace ( qsizetype i , QList::rvalue_ref value )

替换项在索引位置 i with value .

i must be a valid index position in the list (i.e., 0 <= i < size ()).

另请参阅 operator[] () 和 remove ().

QList::iterator QList:: insert ( QList::const_iterator before , QList::parameter_type value )

QList::iterator QList:: insert ( QList::const_iterator before , QList::rvalue_ref value )

这是重载函数。

插入 value in front of the item pointed to by the iterator before . Returns an iterator pointing at the inserted item.

QList::iterator QList:: insert ( qsizetype i , QList::parameter_type value )

QList::iterator QList:: insert ( qsizetype i , QList::rvalue_ref value )

插入 value at index position i in the list. If i is 0, the value is prepended to the list. If i is size (), the value is appended to the list.

范例:

QList<QString> list;
list << "alpha" << "beta" << "delta";
list.insert(2, "gamma");
// list: ["alpha", "beta", "gamma", "delta"]
					

For large lists, this operation can be slow ( 线性时间 ), because it requires moving all the items at indexes i and above by one position further in memory. If you want a container class that provides a fast insert () function, use std::list instead.

另请参阅 append (), prepend (),和 remove ().

template <typename Args> QList::reference QList:: emplaceBack ( Args &&... args )

template <typename Args> QList::reference QList:: emplace_back ( Args &&... args )

Adds a new element to the end for the container. This new element is constructed in-place using args as the arguments for its construction.

返回对新元素的引用。

范例:

QList<QString> list{"one", "two"};
list.emplaceBack(3, 'a');
qDebug() << list;
// list: ["one", "two", "aaa"]
					

It is also possible to access a newly created object by using returned reference:

QList<QString> list;
auto &ref = list.emplaceBack();
ref = "one";
// list: ["one"]
					

This is the same as list.emplace(list. size (), args ).

另请参阅 emplace .

void QList:: prepend ( QList::parameter_type value )

void QList:: prepend ( QList::rvalue_ref value )

插入 value 在列表的开头。

范例:

QList<QString> list;
list.prepend("one");
list.prepend("two");
list.prepend("three");
// list: ["three", "two", "one"]
					

This is the same as list.insert(0, value ).

Normally this operation is relatively fast (amortized 常量时间 ). 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 常量时间 prepend, use std::list instead, but prefer QList 否则。

另请参阅 append () 和 insert ().

[default] QList:: QList (const QList < T > & other )

构造副本为 other .

此操作花费 常量时间 , because QList is 隐式共享 . This makes returning a QList from a function very fast. If a shared instance is modified, it will be copied (copy-on-write), and that takes 线性时间 .

另请参阅 operator= ().

[default, since 5.2] QList:: QList ( QList < T > && other )

Move-constructs a QList instance, making it point at the same object that other 所指向的。

该函数在 Qt 5.2 引入。

[since 5.14] template <typename InputIterator> QList:: QList ( 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 .

该函数在 Qt 5.14 引入。

QList:: QList ( std::initializer_list < T > args )

Constructs a list from the std::initializer_list given by args .

QList:: QList ( qsizetype size , QList::parameter_type value )

构造列表采用初始尺寸为 size elements. Each element is initialized with value .

另请参阅 resize () 和 fill ().

QList:: QList ( qsizetype size )

构造列表采用初始尺寸为 size 元素。

元素被初始化采用 默认构造值 .

另请参阅 resize ().

QList:: QList ()

构造空列表。

另请参阅 resize ().

[default, since 5.2] QList < T > &QList:: operator= ( QList < T > && other )

移动赋值 other 到此 QList 实例。

该函数在 Qt 5.2 引入。

[default] QList < T > &QList:: operator= (const QList < T > & other )

赋值 other to this list and returns a reference to this list.

[default] QList:: ~QList ()

Destroys the list.

void QList:: append ( QList::parameter_type value )

插入 value 在列表末尾。

范例:

QList<QString> list;
list.append("one");
list.append("two");
QString three = "three";
list.append(three);
// list: ["one", "two", "three"]
// three: "three"
					

This is the same as calling resize( size () + 1) and assigning value to the new last element in the list.

This operation is relatively fast, because QList typically allocates more memory than necessary, so it can grow without reallocating the entire list each time.

另请参阅 operator<< (), prepend (),和 insert ().

[since 5.6] void QList:: append ( QList::rvalue_ref value )

这是重载函数。

范例:

QList<QString> list;
list.append("one");
list.append("two");
QString three = "three";
list.append(std::move(three));
// list: ["one", "two", "three"]
// three: ""
					

该函数在 Qt 5.6 引入。

[since 5.5] void QList:: append (const QList < T > & value )

这是重载函数。

Appends the items of the value list to this list.

该函数在 Qt 5.5 引入。

另请参阅 operator<< () 和 operator+= ().

[since 6.0] void QList:: append ( QList < T > && value )

这是重载函数。

Moves the items of the value list to the end of this list.

该函数在 Qt 6.0 引入。

另请参阅 operator<< () 和 operator+= ().

QList::const_reference QList:: at ( qsizetype i ) const

返回项在索引位置 i 在列表中。

i must be a valid index position in the list (i.e., 0 <= i < size ()).

另请参阅 value () 和 operator[] ().

QList::reference QList:: back ()

提供此函数是为兼容 STL。它相当于 last ().

QList::const_reference QList:: back () const

这是重载函数。

QList::iterator QList:: begin ()

返回 STL 样式迭代器 指向列表首项。

警告: 返回迭代器在分离时是无效的或当 QList 被修改。

另请参阅 constBegin () 和 end ().

QList::const_iterator QList:: begin () const

这是重载函数。

qsizetype QList:: capacity () const

Returns the maximum number of items that can be stored in the list without forcing a reallocation.

The sole purpose of this function is to provide a means of fine tuning QList 's memory usage. In general, you will rarely ever need to call this function. If you want to know how many items are in the list, call size ().

注意: a statically allocated list will report a capacity of 0, even if it's not empty.

警告: 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.

另请参阅 reserve () 和 squeeze ().

[since 5.0] QList::const_iterator QList:: cbegin () const

返回常量 STL 样式迭代器 指向列表首项。

警告: 返回迭代器在分离时是无效的或当 QList 被修改。

该函数在 Qt 5.0 引入。

另请参阅 begin () 和 cend ().

[since 5.0] QList::const_iterator QList:: cend () const

返回常量 STL 样式迭代器 pointing just after the last item in the list.

警告: 返回迭代器在分离时是无效的或当 QList 被修改。

该函数在 Qt 5.0 引入。

另请参阅 cbegin () 和 end ().

void QList:: clear ()

Removes all the elements from the list.

注意: 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:

QList<T> l ...;
QList<T>().swap(l);
Q_ASSERT(l.capacity() == 0);
					

or call squeeze ().

另请参阅 squeeze ().

QList::const_iterator QList:: constBegin () const

返回常量 STL 样式迭代器 指向列表首项。

警告: 返回迭代器在分离时是无效的或当 QList 被修改。

另请参阅 begin () 和 constEnd ().

QList::const_pointer QList:: constData () const

Returns a const pointer to the data stored in the list. The pointer can be used to access the items in the list.

警告: The pointer is invalidated on detachment or when the QList 被修改。

This function is mostly useful to pass a list to a function that accepts a plain C++ array.

另请参阅 data () 和 operator[] ().

QList::const_iterator QList:: constEnd () const

返回常量 STL 样式迭代器 pointing just after the last item in the list.

警告: 返回迭代器在分离时是无效的或当 QList 被修改。

另请参阅 constBegin () 和 end ().

[since 5.6] const T &QList:: constFirst () const

Returns a const reference to the first item in the list. This function assumes that the list isn't empty.

该函数在 Qt 5.6 引入。

另请参阅 constLast (), isEmpty (),和 first ().

[since 5.6] const T &QList:: constLast () const

Returns a const reference to the last item in the list. This function assumes that the list isn't empty.

该函数在 Qt 5.6 引入。

另请参阅 constFirst (), isEmpty (),和 last ().

template <typename AT> bool QList:: contains (const AT & value ) const

返回 true if the list contains an occurrence of value ;否则返回 false .

This function requires the value type to have an implementation of operator==() .

另请参阅 indexOf () 和 count ().

template <typename AT> qsizetype QList:: count (const AT & value ) const

Returns the number of occurrences of value 在列表中。

This function requires the value type to have an implementation of operator==() .

另请参阅 contains () 和 indexOf ().

qsizetype QList:: count () const

这是重载函数。

如同 size ().

[since 5.6] QList::const_reverse_iterator QList:: crbegin () const

返回常量 STL-style reverse iterator pointing to the first item in the list, in reverse order.

警告: 返回迭代器在分离时是无效的或当 QList 被修改。

该函数在 Qt 5.6 引入。

另请参阅 begin (), rbegin (),和 rend ().

[since 5.6] QList::const_reverse_iterator QList:: crend () const

返回常量 STL-style reverse iterator pointing just after the last item in the list, in reverse order.

警告: 返回迭代器在分离时是无效的或当 QList 被修改。

该函数在 Qt 5.6 引入。

另请参阅 end (), rend (),和 rbegin ().

QList::pointer QList:: data ()

Returns a pointer to the data stored in the list. The pointer can be used to access and modify the items in the list.

范例:

QList<int> list(10);
int *data = list.data();
for (qsizetype i = 0; i < 10; ++i)
    data[i] = 2 * i;
					

警告: The pointer is invalidated on detachment or when the QList 被修改。

This function is mostly useful to pass a list to a function that accepts a plain C++ array.

另请参阅 constData () 和 operator[] ().

QList::const_pointer QList:: data () const

这是重载函数。

template <typename Args> QList::iterator QList:: emplace ( qsizetype i , Args &&... args )

Extends the container by inserting a new element at position i . This new element is constructed in-place using args as the arguments for its construction.

Returns an iterator to the new element.

范例:

QList<QString> list{"a", "ccc"};
list.emplace(1, 2, 'b');
// list: ["a", "bb", "ccc"]
					

注意: 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.

另请参阅 emplaceBack .

template <typename Args> QList::iterator QList:: emplace ( QList::const_iterator before , Args &&... args )

这是重载函数。

Creates a new element in front of the item pointed to by the iterator before . This new element is constructed in-place using args as the arguments for its construction.

Returns an iterator to the new element.

bool QList:: empty () const

提供此函数是为兼容 STL。它相当于 isEmpty (), returning true if the list is empty; otherwise returns false .

QList::iterator QList:: end ()

返回 STL 样式迭代器 pointing just after the last item in the list.

警告: 返回迭代器在分离时是无效的或当 QList 被修改。

另请参阅 begin () 和 constEnd ().

QList::const_iterator QList:: end () const

这是重载函数。

bool QList:: endsWith ( QList::parameter_type value ) const

返回 true if this list is not empty and its last item is equal to value ;否则返回 false .

另请参阅 isEmpty () 和 last ().

QList::iterator QList:: erase ( QList::const_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 ()).

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 ().

注意: QList 不是 隐式共享 , this function only invalidates iterators at or after the specified position.

另请参阅 insert () 和 remove ().

QList::iterator QList:: erase ( QList::const_iterator begin , QList::const_iterator end )

这是重载函数。

Removes all the items from begin up to (but not including) end . Returns an iterator to the same item that end referred to before the call.

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 ().

注意: QList 不是 隐式共享 , this function only invalidates iterators at or after the specified position.

QList < T > &QList:: fill ( QList::parameter_type value , qsizetype size = -1)

赋值 value to all items in the list. If size is different from -1 (the default), the list is resized to size beforehand.

范例:

QList<QString> list(3);
list.fill("Yes");
// list: ["Yes", "Yes", "Yes"]
list.fill("oh", 5);
// list: ["oh", "oh", "oh", "oh", "oh"]
					

另请参阅 resize ().

T &QList:: first ()

Returns a reference to the first item in the list. This function assumes that the list isn't empty.

另请参阅 last (), isEmpty (),和 constFirst ().

const T &QList:: first () const

这是重载函数。

[since 6.0] QList < T > QList:: first ( qsizetype n ) const

Returns a sub-list that contains the first n elements of this list.

注意: The behavior is undefined when n < 0 or n > size ().

该函数在 Qt 6.0 引入。

另请参阅 last () 和 sliced ().

QList::reference QList:: front ()

提供此函数是为兼容 STL。它相当于 first ().

QList::const_reference QList:: front () const

这是重载函数。

template <typename AT> qsizetype QList:: indexOf (const AT & value , qsizetype from = 0) const

Returns the index position of the first occurrence of value in the list, searching forward from index position from . Returns -1 if no item matched.

范例:

QList<QString> list;
list << "A" << "B" << "C" << "B" << "A";
list.indexOf("B");            // returns 1
list.indexOf("B", 1);         // returns 1
list.indexOf("B", 2);         // returns 3
list.indexOf("X");            // returns -1
					

This function requires the value type to have an implementation of operator==() .

另请参阅 lastIndexOf () 和 contains ().

QList::iterator QList:: insert ( qsizetype i , qsizetype count , QList::parameter_type value )

这是重载函数。

插入 count copies of value at index position i 在列表中。

范例:

QList<double> list;
list << 2.718 << 1.442 << 0.4342;
list.insert(1, 3, 9.9);
// list: [2.718, 9.9, 9.9, 9.9, 1.442, 0.4342]
					

QList::iterator QList:: insert ( QList::const_iterator before , qsizetype count , QList::parameter_type value )

插入 count copies of value in front of the item pointed to by the iterator before . Returns an iterator pointing at the first of the inserted items.

bool QList:: isEmpty () const

返回 true if the list has size 0; otherwise returns false .

另请参阅 size () 和 resize ().

T &QList:: last ()

Returns a reference to the last item in the list. This function assumes that the list isn't empty.

另请参阅 first (), isEmpty (),和 constLast ().

const T &QList:: last () const

这是重载函数。

[since 6.0] QList < T > QList:: last ( qsizetype n ) const

Returns a sub-list that contains the last n elements of this list.

注意: The behavior is undefined when n < 0 or n > size ().

该函数在 Qt 6.0 引入。

另请参阅 first () 和 sliced ().

template <typename AT> qsizetype QList:: lastIndexOf (const AT & value , qsizetype from = -1) const

Returns the index position of the last occurrence of the value value in the list, searching backward from index position from 。若 from is -1 (the default), the search starts at the last item. Returns -1 if no item matched.

范例:

QList<QString> list;
list << "A" << "B" << "C" << "B" << "A";
list.lastIndexOf("B");        // returns 3
list.lastIndexOf("B", 3);     // returns 3
list.lastIndexOf("B", 2);     // returns 1
list.lastIndexOf("X");        // returns -1
					

This function requires the value type to have an implementation of operator==() .

另请参阅 indexOf ().

[since 5.2] qsizetype QList:: length () const

如同 size () 和 count ().

该函数在 Qt 5.2 引入。

另请参阅 size () 和 count ().

QList < T > QList:: mid ( qsizetype pos , qsizetype length = -1) const

Returns a sub-list which contains elements from this list, starting at position pos 。若 length is -1 (the default), all elements after pos are included; otherwise length elements (or all remaining elements if there are less than length elements) are included.

[since 5.6] void QList:: move ( qsizetype from , qsizetype to )

移动索引位置项 from 到索引位置 to .

该函数在 Qt 5.6 引入。

void QList:: pop_back ()

提供此函数是为兼容 STL。它相当于 removeLast ().

void QList:: pop_front ()

提供此函数是为兼容 STL。它相当于 removeFirst ().

void QList:: push_back ( QList::parameter_type value )

This function is provided for STL compatibility. It is equivalent to append( value ).

[since 5.6] void QList:: push_back ( QList::rvalue_ref value )

这是重载函数。

该函数在 Qt 5.6 引入。

[since 5.6] QList::reverse_iterator QList:: rbegin ()

返回 STL-style reverse iterator pointing to the first item in the list, in reverse order.

警告: 返回迭代器在分离时是无效的或当 QList 被修改。

该函数在 Qt 5.6 引入。

另请参阅 begin (), crbegin (),和 rend ().

[since 5.6] QList::const_reverse_iterator QList:: rbegin () const

这是重载函数。

该函数在 Qt 5.6 引入。

void QList:: remove ( qsizetype i , qsizetype n = 1)

移除 n elements from the list, starting at index position i .

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 ().

注意: QList 不是 隐式共享 , this function only invalidates iterators at or after the specified position.

另请参阅 insert (), replace (),和 fill ().

[since 5.4] template <typename AT> qsizetype QList:: removeAll (const AT & t )

Removes all elements that compare equal to t from the list. Returns the number of elements removed, if any.

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 ().

该函数在 Qt 5.4 引入。

另请参阅 removeOne ().

[since 5.2] void QList:: removeAt ( qsizetype i )

Removes the element at index position i . Equivalent to

remove(i);
					

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 ().

注意: QList 不是 隐式共享 , this function only invalidates iterators at or after the specified position.

该函数在 Qt 5.2 引入。

另请参阅 remove ().

[since 5.1] void QList:: removeFirst ()

Removes the first item in the list. Calling this function is equivalent to calling remove(0). The list must not be empty. If the list can be empty, call isEmpty () before calling this function.

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 ().

该函数在 Qt 5.1 引入。

另请参阅 remove (), takeFirst (),和 isEmpty ().

[since 6.1] template <typename Predicate> qsizetype QList:: removeIf ( Predicate pred )

Removes all elements for which the predicate pred returns true from the list. Returns the number of elements removed, if any.

该函数在 Qt 6.1 引入。

另请参阅 removeAll ().

[since 5.1] void QList:: removeLast ()

Removes the last item in the list. Calling this function is equivalent to calling remove( size () - 1). The list must not be empty. If the list can be empty, call isEmpty () before calling this function.

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 ().

该函数在 Qt 5.1 引入。

另请参阅 remove (), takeLast (), removeFirst (),和 isEmpty ().

[since 5.4] template <typename AT> bool QList:: removeOne (const AT & t )

Removes the first element that compares equal to t from the list. Returns whether an element was, in fact, removed.

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 ().

该函数在 Qt 5.4 引入。

另请参阅 removeAll ().

[since 5.6] QList::reverse_iterator QList:: rend ()

返回 STL-style reverse iterator pointing just after the last item in the list, in reverse order.

警告: 返回迭代器在分离时是无效的或当 QList 被修改。

该函数在 Qt 5.6 引入。

另请参阅 end (), crend (),和 rbegin ().

[since 5.6] QList::const_reverse_iterator QList:: rend () const

这是重载函数。

该函数在 Qt 5.6 引入。

void QList:: reserve ( qsizetype size )

试图分配内存为至少 size 元素。

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.

If in doubt about how much space shall be needed, it is usually better to use an upper bound as size , or a high estimate of the most likely size, if a strict upper bound would be much bigger than this. If 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.

警告: 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 ().

另请参阅 squeeze (), capacity (),和 resize ().

void QList:: resize ( qsizetype size )

Sets the size of the list to size 。若 size is greater than the current size, elements are added to the end; the new elements are initialized with a 默认构造值 。若 size is less than the current size, elements are removed from the end.

Since Qt 5.6, resize() doesn't shrink the capacity anymore. To shed excess capacity, use squeeze ().

另请参阅 size ().

[since 5.10] void QList:: shrink_to_fit ()

提供此函数是为兼容 STL。它相当于 squeeze ().

该函数在 Qt 5.10 引入。

qsizetype QList:: size () const

Returns the number of items in the list.

另请参阅 isEmpty () 和 resize ().

[since 6.0] QList < T > QList:: sliced ( qsizetype pos , qsizetype n ) const

Returns a sub-list that contains n elements of this list, starting at position pos .

注意: The behavior is undefined when pos < 0, n < 0, or pos + n > size ().

该函数在 Qt 6.0 引入。

另请参阅 first () 和 last ().

[since 6.0] QList < T > QList:: sliced ( qsizetype pos ) const

这是重载函数。

Returns a sub-list that contains the elements of this list starting at position pos and extending to its end.

注意: The behavior is undefined when pos < 0 or pos > size ().

该函数在 Qt 6.0 引入。

另请参阅 first () 和 last ().

void QList:: squeeze ()

Releases any memory not required to store the items.

The sole purpose of this function is to provide a means of fine tuning QList 's memory usage. In general, you will rarely ever need to call this function.

另请参阅 reserve () 和 capacity ().

bool QList:: startsWith ( QList::parameter_type value ) const

返回 true if this list is not empty and its first item is equal to value ;否则返回 false .

另请参阅 isEmpty () 和 first ().

void QList:: swap ( QList < T > & other )

Swaps list other with this list. This operation is very fast and never fails.

void QList:: swapItemsAt ( qsizetype i , qsizetype j )

Exchange the item at index position i with the item at index position j . This function assumes that both i and j are at least 0 but less than size (). To avoid failure, test that both i and j are at least 0 and less than size ().

[since 5.2] T QList:: takeAt ( qsizetype i )

Removes the element at index position i and returns it.

相当于

T t = at(i);
remove(i);
return t;
					

注意: QList 不是 隐式共享 , this function only invalidates iterators at or after the specified position.

该函数在 Qt 5.2 引入。

另请参阅 takeFirst () 和 takeLast ().

[since 5.1] QList::value_type QList:: takeFirst ()

Removes the first item in the list and returns it. This function assumes the list is not empty. To avoid failure, call isEmpty () before calling this function.

该函数在 Qt 5.1 引入。

另请参阅 takeLast () 和 removeFirst ().

[since 5.1] QList::value_type QList:: takeLast ()

Removes the last item in the list and returns it. This function assumes the list is not empty. To avoid failure, call isEmpty () before calling this function.

若不使用返回值, removeLast () 效率更高。

该函数在 Qt 5.1 引入。

另请参阅 takeFirst () 和 removeLast ().

T QList:: value ( qsizetype i ) const

Returns the value at index position i 在列表中。

If the index i is out of bounds, the function returns a 默认构造值 . If you are certain that i is within bounds, you can use at () instead, which is slightly faster.

另请参阅 at () 和 operator[] ().

T QList:: value ( qsizetype i , QList::parameter_type defaultValue ) const

这是重载函数。

If the index i is out of bounds, the function returns defaultValue .

bool QList:: operator!= (const QList < T > & other ) const

返回 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 have an implementation of operator==() .

另请参阅 operator== ().

QList < T > QList:: operator+ (const QList < T > & other ) const

Returns a list that contains all the items in this list followed by all the items in the other 列表。

另请参阅 operator+= ().

[since 6.0] QList < T > QList:: operator+ ( QList < T > && other ) const

这是重载函数。

该函数在 Qt 6.0 引入。

另请参阅 operator+= ().

QList < T > &QList:: operator+= (const QList < T > & other )

Appends the items of the other list to this list and returns a reference to this list.

另请参阅 operator+ () 和 append ().

[since 6.0] QList < T > &QList:: operator+= ( QList < T > && other )

这是重载函数。

该函数在 Qt 6.0 引入。

另请参阅 operator+ () 和 append ().

QList < T > &QList:: operator+= ( QList::parameter_type value )

这是重载函数。

追加 value to the list.

另请参阅 append () 和 operator<< ().

[since 5.11] QList < T > &QList:: operator+= ( QList::rvalue_ref value )

这是重载函数。

该函数在 Qt 5.11 引入。

另请参阅 append () 和 operator<< ().

[since 5.6] bool QList:: operator< (const QList < T > & other ) const

返回 true if this list is lexically less than other ;否则返回 false .

This function requires the value type to have an implementation of operator<() .

该函数在 Qt 5.6 引入。

QList < T > &QList:: operator<< ( QList::parameter_type value )

追加 value to the list and returns a reference to this list.

另请参阅 append () 和 operator+= ().

QList < T > &QList:: operator<< (const QList < T > & other )

追加 other to the list and returns a reference to the list.

[since 6.0] QList < T > &QList:: operator<< ( QList < T > && other )

这是重载函数。

该函数在 Qt 6.0 引入。

[since 5.11] QList < T > &QList:: operator<< ( QList::rvalue_ref value )

这是重载函数。

该函数在 Qt 5.11 引入。

另请参阅 append () 和 operator+= ().

[since 5.6] bool QList:: operator<= (const QList < T > & other ) const

返回 true if this list is lexically less than or equal to other ;否则返回 false .

This function requires the value type to have an implementation of operator<() .

该函数在 Qt 5.6 引入。

[since 5.14] QList < T > &QList:: operator= ( std::initializer_list < T > args )

Assigns the collection of values in args 到此 QList 实例。

该函数在 Qt 5.14 引入。

bool QList:: operator== (const QList < T > & other ) const

返回 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 have an implementation of operator==() .

另请参阅 operator!= ().

[since 5.6] bool QList:: operator> (const QList < T > & other ) const

返回 true if this list is lexically greater than other ;否则返回 false .

This function requires the value type to have an implementation of operator<() .

该函数在 Qt 5.6 引入。

[since 5.6] bool QList:: operator>= (const QList < T > & other ) const

返回 true if this list is lexically greater than or equal to other ;否则返回 false .

This function requires the value type to have an implementation of operator<() .

该函数在 Qt 5.6 引入。

QList::reference QList:: operator[] ( qsizetype i )

返回项在索引位置 i as a modifiable reference.

i must be a valid index position in the list (i.e., 0 <= i < size ()).

Note that using non-const operators can cause QList to do a deep copy.

另请参阅 at () 和 value ().

QList::const_reference QList:: operator[] ( qsizetype i ) const

这是重载函数。

如同 at( i ).

相关非成员

[since 6.1] template <typename T, typename AT> qsizetype erase ( QList < T > & list , const AT & t )

Removes all elements that compare equal to t from the list list . Returns the number of elements removed, if any.

注意: 不像 QList::removeAll , t is not allowed to be a reference to an element inside list . If you cannot be sure that this is not the case, take a copy of t and call this function with the copy.

该函数在 Qt 6.1 引入。

另请参阅 QList::removeAll () 和 erase_if .

[since 6.1] template <typename T, typename Predicate> qsizetype erase_if ( QList < T > & list , Predicate pred )

Removes all elements for which the predicate pred returns true from the list list . Returns the number of elements removed, if any.

该函数在 Qt 6.1 引入。

另请参阅 erase .

[since 5.6] template <typename T> size_t qHash (const QList < T > & key , size_t seed = 0)

返回哈希值为 key ,使用 seed 做计算种子。

This function requires qHash() to be overloaded for the value type T .

该函数在 Qt 5.6 引入。

template <typename T> QDataStream & operator<< ( QDataStream & out , const QList < T > & list )

Writes the list list 到流 out .

This function requires the value type to implement operator<<() .

另请参阅 QDataStream 运算符格式 .

template <typename T> QDataStream & operator>> ( QDataStream & in , QList < T > & list )

Reads a list from stream in into list .

This function requires the value type to implement operator>>() .

另请参阅 QDataStream 运算符格式 .