ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 概述 1. 当针对按索引的随机访问以及少于1000项的列表进行了优化 1. 存储在 Qt 数据容器里面的数据,必须是可赋值类型 ``` C++ 基本数据类型,int、double、指针等可以存储在 Qt 数据容器里 Qt 的数据类型,比如 QString、QDate、QTime 等 QDataStream 支持的可串行化的数值类型, 搜索 "Serializing Qt Data Types" 凡是 QObject 类和所有 QObject 派生类的对象都不允许直接存储在数据容器里面, QList<QWidget> , 可以存储如 'QList<QWidget *>' ``` 2. 自定义数据类型存储的容器的要求 ``` 定义默认构造函数,比如 MyData() ; 定义复制构造函数,比如 MyData(const MyData &d); 定义赋值运算符 = 函数,比如 MyData& operator=(const MyData &d)。 ``` 常用函数 ``` // 构造函数 QList() //默认构造函数 QList(const QList<T> & other) //复制构造函数 QList(QList<T> && other) //移动构造函数 QList(std::initializer_list<T> args) //初始列表构造函数 // 添加函数 void append(const T & value) void append(const QList<T> & 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<T> toSet() const //转为集合 std::list<T> toStdList() const //转为标准库的列表 QVector<T> toVector() const //转为向量 QList<T> fromSet(const QSet<T> & set) //静态函数,将集合转为列表 QList<T> fromStdList(const std::list<T> & list) //静态函数,将标准库列表转为 Qt 列表 QList<T> fromVector(const QVector<T> & vector) //静态函数,将向量转为列表 ``` 迭代器函数 ``` QList::const_iterator //只读迭代器类,STL风格 QList::iterator //读写迭代器类,STL风格 QList::​ConstIterator //只读迭代器,Qt命名风格 QList::​Iterator //读写迭代器,Qt命名风格 ``` ## 实例 ``` QList<QString> list; list.append("January"); list.append("February"); ... list.append("December"); QList<QString>::const_iterator i; for (i = list.constBegin(); i != list.constEnd(); ++i) cout << *i << endl; ```