QList类
QList类是一个提供列表的模板类,要使用这个类,头文件需要导入QList库:
#include <QList>
在qmake.pro文件中加入QList类的支持:
QT += core
QList的派生类有:QByteArrayList, QItemSelection, QQueue还有 QStringList
公共类型:
class | const_iterator |
---|---|
class | 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 |
公共方法
QList(InputIterator first, InputIterator last) | ||
---|---|---|
QList(std::initializer_list args) | ||
QList(QList &&other) | ||
QList(const QList &other) | 构造other的副本 | |
QList() | 构造一个空列表 | |
QList & | operator=(QList &&other) | |
QList & | operator=(const QList &other) | 将other分配给此列表,并返回对此列表的引用 |
~QList() | 销毁列表 | |
void | append(const T &value) | QList<QString> list; list.append(“one”); list.append(“two”); list.append(“three”); // list: [“one”, “two”, “three”] 这与list.insert(size(),value)相同 |
void | append(const QList &value) | 这是一个重载函数,将值列表的项目追加到此列表 |
const T & | at(int i) const | 返回列表中索引位置i的项,i必须是列表中的有效索引位置(即0 <= i < size()) |
T & | back() | 提供此功能是为了STL兼容相当于last(),列表不能为空,如果列表可以是空的,那么在调用这个函数之前先调用isEmpty() |
const T & | back() const | 这是一个重载函数 |
QList::iterator | begin() | 返回一个STL风格的迭代器,指向列表中的第一项 |
QList::const_iterator | begin() const | 这是一个重载函数 |
QList::const_iterator | cbegin() const | 返回指向列表中第一项的常量STL样式迭代器 |
QList::const_iterator | cend() const | 返回一个常量STL风格的迭代器,指向列表中最后一项之后的虚项 |
void | clear() | 从列表中删除所有项目 |
QList::const_iterator | constBegin() const | 返回指向列表中第一项的常量STL样式迭代器 |
QList::const_iterator | constEnd() const | 返回一个常量STL风格的迭代器,指向列表中最后一项之后的虚项 |
const T & | constFirst() const | 返回列表中第一项的常量引用,列表不能为空,如果列表可以是空的,那么在调用这个函数之前先调用isEmpty() |
const T & | constLast() const | 返回对列表中最后一项的引用,列表不能为空。如果列表可以是空的,那么在调用这个函数之前先调用isEmpty() |
bool | contains(const T &value) const | 如果列表包含值的出现,则返回true否则返回false。此函数要求值类型实现运算符==() |
int | count(const T &value) const | 返回列表中值的出现次数,此函数要求值类型实现运算符==() |
int | count() const | 返回列表中的项目数,这实际上与 size()相同 |
QList::const_reverse_iterator | crbegin() const | 返回一个指向列表中第一项的常量STL样式的反向迭代器,顺序相反 |
QList::const_reverse_iterator | crend() const | 返回一个常量STL样式的反向迭代器,以相反的顺序指向列表中最后一项之后的一个 |
bool | empty() const | 提供此功能是为了STL兼容,它相当于isEmpty(),如果列表为空,则返回true |
QList::iterator | end() | 返回一个STL风格的迭代器,指向列表中最后一项之后的虚项 |
QList::const_iterator | end() const | 这是一个重载函数 |
bool | endsWith(const T &value) const | 如果此列表不为空且其最后一项等于值,则返回true否则返回false |
QList::iterator | erase(QList::iterator pos) | 从列表中移除与迭代器pos关联的项,并返回列表中下一个项的迭代器(可能是end()) |
QList::iterator | erase(QList::iterator begin, QList::iterator end) | 这是一个重载函数,从开始到(但不包括)结束删除所有项目,返回一个迭代器,指向在调用之前结束引用的同一项 |
T & | first() | 返回对列表中第一项的引用,列表不能为空。如果列表可以是空的,那么在调用这个函数之前先调用isEmpty() |
const T & | first() const | 这是一个重载函数 |
T & | front() | 提供此功能是为了STL兼容,相当于 first(),列表不能为空。如果列表可以是空的,那么在调用这个函数之前先调用isEmpty() |
const T & | front() const | 这是一个重载函数 |
int | indexOf(const T &value, int from = 0) const | 返回列表中第一个值的索引位置,从索引位置向前搜索。如果没有匹配的项目,则返回-1; 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”); |
void | insert(int i, const T &value) | QList<QString> list; list << “alpha” << “beta” << “delta”; list.insert(2, “gamma”); // list: [“alpha”, “beta”, “gamma”, “delta”] |
QList::iterator | insert(QList::iterator before, const T &value) | 这是一个重载函数,在迭代器指向的项目前面插入值。返回指向插入项的迭代器。请注意,传递给函数的迭代器在调用后将无效;应该使用返回的迭代器 |
bool | isEmpty() const | 如果列表不包含任何项目,则返回true否则返回false |
T & | last() | 返回对列表中最后一项的引用。列表不能为空。如果列表可以是空的,那么在调用这个函数之前先调用isEmpty() |
const T & | last() const | 这是一个重载函数 |
int | lastIndexOf(const T &value, int from = -1) const | |
int | length() const | |
QList | mid(int pos, int length = -1) const | |
void | move(int from, int to) | |
void | pop_back() | |
void | pop_front() | |
void | prepend(const T &value) | |
void | push_back(const T &value) | |
void | push_front(const T &value) | |
QList::reverse_iterator | rbegin() | |
QList::const_reverse_iterator | rbegin() const | |
int | removeAll(const T &value) | |
void | removeAt(int i) | |
void | removeFirst() | |
void | removeLast() | |
bool | removeOne(const T &value) | |
QList::reverse_iterator | rend() | |
QList::const_reverse_iterator | rend() const | |
void | replace(int i, const T &value) | |
void | reserve(int alloc) | |
int | size() const | |
bool | startsWith(const T &value) const | |
void | swap(QList &other) | 用此列表交换other列表 |
void | swapItemsAt(int i, int j) | 将索引位置I的项目与索引位置j的项目交换 QList<QString> list; list << “A” << “B” << “C” << “D” << “E” << “F”; list.swapItemsAt(1, 4); // list: [“A”, “E”, “C”, “D”, “B”, “F”] |
T | takeAt(int i) | 移除索引位置I处的项并返回它。I必须是列表中的有效索引位置(即0 <= i < size())如果不使用返回值,removeAt()效率更高 |
T | takeFirst() | 移除列表中的第一项并返回。这与takeAt(0)相同。该函数假设列表不为空。为了避免失败,请在调用此函数之前调用isEmpty()如果不使用返回值,removeFirst()效率更高 |
T | takeLast() | 移除列表中的最后一项并返回。这个和takeAt(size() - 1)一样。该函数假设列表不为空。为了避免失败,请在调用此函数之前调用isEmpty() |
QSet | toSet() const | QStringList list; list << “Julia” << “Mike” << “Mike” << “Julia” << “Julia”; QSet<QString> set = list.toSet(); set.contains(“Julia”); // returns true set.contains(“Mike”); // returns true set.size(); // returns 2 |
std::list | toStdList() const | QList<double> list; list << 1.2 << 0.5 << 3.14; std::list stdlist = list.toStdList(); |
QVector | toVector() const | QStringList list; list << “Sven” << “Kim” << “Ola”; QVector<QString> vect = list.toVector(); // vect: [“Sven”, “Kim”, “Ola”] |
T | value(int i) const | 返回列表中索引位置I的值,如果索引I超出界限,函数将返回一个默认构造的值。如果您确定索引将在范围内,您可以使用at()来代替,这样会稍微快一些 |
T | value(int i, const T &defaultValue) const | 这是一个重载函数。如果索引I超出界限,该函数将返回defaultValue |
bool | operator!=(const QList &other) const | 如果other不等于此列表,则返回true否则返回false。如果两个列表以相同的顺序包含相同的值,则它们被视为相等 |
QList | operator+(const QList &other) const | 返回一个列表,该列表包含自已列表中的所有项目,然后是other列表中的所有项目 |
QList & | operator+=(const QList &other) | 将other列表的项目追加到此列表,并返回对此列表的引用 |
QList & | operator+=(const T &value) | 这是一个重载函数。向列表追加值 |
QList & | operator<<(const QList &other) | 将other列表的项目追加到此列表,并返回对此列表的引用 |
QList & | operator<<(const T &value) | list << “four” << “five”; colindexs << 15 << 14 << 13 << 11 << 8 << 7 << 6 << 5; |
bool | operator==(const QList &other) const | 如果other等于此列表,则返回true否则返回false。如果两个列表以相同的顺序包含相同的值,则它们被视为相等 |
T & | operator[](int i) | 返回i项的引用,可读写: list[0] == “Bob” list[0] = “Robert” |
const T & | operator[](int i) const | 这是一个重载函数 |
静态公共成员
QList | fromSet(const QSet &set) |
---|---|
QList | fromStdList(const std::list &list) |
QList | fromVector(const QVector &vector) |
相关非成员
uint | qHash(const QList &key, uint seed = 0) |
---|---|
bool | operator<(const QList &lhs, const QList &rhs) |
QDataStream & | operator<<(QDataStream &out, const QList &list) |
bool | operator<=(const QList &lhs, const QList &rhs) |
bool | operator>(const QList &lhs, const QList &rhs) |
bool | operator>=(const QList &lhs, const QList &rhs) |
QDataStream & | operator>>(QDataStream &in, QList &list) |
详细描述
QList是Qt的通用容器类之一,它将项目存储在一个列表中,该列表提供基于索引的快速访问和基于索引的插入和删除。
QList、QLinkedList < T >、QVector提供了类似的API和功能,它们通常可以互换,但会产生性能后果,以下是用例概述:
- QVector应该是你默认的首选,QVector通常会比QList给出更好的性能,因为QVector总是在内存中顺序存储它的项目,其中QList将在堆上分配它的项目,除非sizeof(T) <= sizeof(void*)并且T已经使用Q_DECLARE_TYPEINFO声明为Q_MOVABLE_TYPE 或者一个 Q_PRIMITIVE_TYPE
- 不管怎么说,QList在Qt应用编程接口中始终用于传递参数和返回值
- 如果你需要一个真正的链表,它保证在链表中间有固定时间的插入,并且使用迭代器来代替索引,那么就使用QLinkedList
注意:QVector和QVarLengthArray都保证C兼容的数组布局,QList没有,如果您的应用程序必须与C