QList
最后更新于:2022-04-02 02:13:38
[TOC]
## 概述
1. 当针对按索引的随机访问以及少于1000项的列表进行了优化
1. 存储在 Qt 数据容器里面的数据,必须是可赋值类型
```
C++ 基本数据类型,int、double、指针等可以存储在 Qt 数据容器里
Qt 的数据类型,比如 QString、QDate、QTime 等
QDataStream 支持的可串行化的数值类型, 搜索 "Serializing Qt Data Types"
凡是 QObject 类和所有 QObject 派生类的对象都不允许直接存储在数据容器里面, QList ,
可以存储如 'QList'
```
2. 自定义数据类型存储的容器的要求
```
定义默认构造函数,比如 MyData() ;
定义复制构造函数,比如 MyData(const MyData &d);
定义赋值运算符 = 函数,比如 MyData& operator=(const MyData &d)。
```
常用函数
```
// 构造函数
QList() //默认构造函数
QList(const QList & other) //复制构造函数
QList(QList && other) //移动构造函数
QList(std::initializer_list args) //初始列表构造函数
// 添加函数
void append(const T & value)
void append(const QList & value) // 一个列表中所有元素追加到列表末尾
void push_back(const T & value) //同第一个 append(),STL风格添加到队尾
void insert(int i, const T & value)
void prepend(const T & value) // value 添加到列表头部,等同于 insert(0, value)
void push_front(const T & value) //STL风格,同 prepend()
// 移除和删除函数
// take**() 从列表中卸载下来,并不会删除元素内存空间,该值返回
T takeAt(int i) //移除序号为 i 元素并返回该元素
T takeFirst() //移除队头元素并返回该元素
T takeLast() //移除队尾元素并返回该元素
remove**() 删除空间,且不返回值
void removeAt(int i) //删除序号为 i 的元素,释放该元素内存
void removeFirst() //删除队头元素,释放该元素内存
void pop_front() //同 removeFirst() ,STL风格
void removeLast() //删除队尾元素,释放该元素内存
void pop_back() //同 removeLast(),STL风格
int removeAll(const T & value) //删除列表中所有等于 value 值的元素,返回删除的数量
bool removeOne(const T & value) //删除列表中第一个等于 value 值的元素,如果列表有等于 value 值的元素,返回 true,否则返回 false
void clear() //释放所有元素与空间
// 访问和查询函数
int size() const
int length() const //同 size()
void reserve(int alloc) // 提前分配空间
bool contains(const T & value) const //是否存在某个值
// 查找
int indexOf(const T & value, int from = 0) const //从前向后 查找等于 value 值的元素序号
int lastIndexOf(const T & value, int from = -1) const //从后向前查找等于 value 值的元素序号
bool startsWith(const T & value) const //检查队头是否等于 value
bool endsWith(const T & value) const //检查队尾是否等于 value
// 容器类型转换函数
QSet toSet() const //转为集合
std::list toStdList() const //转为标准库的列表
QVector toVector() const //转为向量
QList fromSet(const QSet & set) //静态函数,将集合转为列表
QList fromStdList(const std::list & list) //静态函数,将标准库列表转为 Qt 列表
QList fromVector(const QVector & vector) //静态函数,将向量转为列表
```
迭代器函数
```
QList::const_iterator //只读迭代器类,STL风格
QList::iterator //读写迭代器类,STL风格
QList::ConstIterator //只读迭代器,Qt命名风格
QList::Iterator //读写迭代器,Qt命名风格
```
## 实例
```
QList list;
list.append("January");
list.append("February");
...
list.append("December");
QList::const_iterator i;
for (i = list.constBegin(); i != list.constEnd(); ++i)
cout << *i << endl;
```
';