概述
仅在此简单介绍QVector与QList的一些常见函数,有兴趣的可以查下QT帮助文档(F1)。
两者都是Qt提供的的泛型容器类,分别对std::vector和std::list进行了改进,以提高运行效率,简化使用。
QVector类是一个提供动态数组的模板类,QList类类是一个提供链表的模板类。
有兴趣的可以研究一下Qt库中的具体实现,对提高代码水平会有很大提升。
使用:
QList可以解决绝大多数问题,效率也更高。
源码
建立一个qt控制台程序,代码如下:
main.cp
#include <QCoreApplication>
#include <QVector>
#include <QList>
#include <QDebug>
//QT简单入门实例5【QVector与QList容器类】
//QVector<T>,QList<T> 可容纳 QT 和 c++11 的内置类型,也可容纳用户自定义类型,如结构体和类
//本次程序以 QVector<int>, QList<int> 为例
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QVector<int> vector;
qDebug()<<"QVector<int>:";
//在末尾增加元素
vector.push_back(3);
vector<<4;
vector.append(5);
//在开头增加元素
vector.prepend(2);
vector.push_front(1);
qDebug()<<vector;
//任意位置插入
vector.insert(1,2,6); //在索引值1的位置插入2个6
qDebug()<<vector;
//移除元素
vector.remove(1,2); //从索引值1开始,移除2个元素
qDebug()<<vector;
//查找
qDebug()<<vector.indexOf(3); //查找值为3的元素,返回找到的 第一个3 的索引值
//按索引取出元素
qDebug()<<vector.at(0);
//更改元素
vector.replace(0,2); //将索引值为0的元素替换成 2
qDebug()<<vector;
//获取长度,以下三种方式等价
qDebug()<<vector.count();
qDebug()<<vector.size();
qDebug()<<vector.length();
//清除容器
vector.clear();
qDebug()<<vector;
QList<int> list;
qDebug()<<"\n\nQList<int>:";
//在末尾增加元素
list.push_back(3);
list<<4;
list.append(5);
//在开头增加元素
list.prepend(2);
list.push_front(1);
qDebug()<<list;
//任意位置插入
list.insert(1,6); //在索引值1的位置插入6
qDebug()<<list;
//移除元素
list.removeAt(1); //移除索引值为1的元素
qDebug()<<list;
//查找
qDebug()<<list.indexOf(3); //查找值为3的元素,返回找到的 第一个3 的索引值
//按索引取出元素
qDebug()<<list.at(0);
//更改元素
list.replace(0,2); //将索引值为0的元素替换成 2
qDebug()<<list;
//获取长度,以下三种方式等价
qDebug()<<list.count();
qDebug()<<list.size();
qDebug()<<list.length();
//清除容器
list.clear();
qDebug()<<list;
return a.exec();
}
运行结果: