【QT 基础教程 九】QVector类详解

概要:本期主要讲解Qt中QVector容器类的常用接口。

一、简介:

头文件:#include
模块: QT += core
功能:主要用于数据存储,可以类比C++中的泛型容器vector(动态数组)进行学习。

二、常用接口

1.初始化、赋值
//初始化 QVector vec;
QVector<int> _vec;
//赋值
//1. QVector()
QVector<int> _vec(3,1);//_vec = [1,1,1]
//2.数组方式索引赋值
QVector<QString> _vec;
_vec[0] = "jjjs";
_vec[1] = "ggds";
2.插入元素
//1.append() 在尾部插入 等同于 void push_back() 
QVector<int> _vec;
_vec.append(1);//_vec = [1]
//2.insert() 在任意位置插入
_vec.insert(1,1);//_vec = [1,2]
_vec.insert(2,3,3);//_vec = [1,2,3,3,3]
//3.push_front() 在头部插入
_vec.push_front(0);//_vec = [0,1,2,3,3,3]
3.删除元素
//1.pop_back() 在尾部删除 等同于 void removeLast() 、 T takeLast()
QVector<QString> _vec;
_vec[0] = "jjjs";
_vec[1] = "ggds";
_vec[2] = "dskk";//_vec = ["jjjs","ggds","dskk"]
_vec.pop_back();//_vec = ["jjjs","ggds"]
//2.pop_front() 在头部删除 等同于 void removeFirst() 、 T takeFirst()
_vec.pop_front();//_vec = ["ggds"]
//3.remove() 在任意位置删除 等同于 T takeAt(int i)
_vec.remove(0);//_ver = []
4.大小、长度
QVector<int> _vec(9,0);
//1.count()
int _iLen = _vec.count();//_iLen = 9
//2.size()
_iLen = _vec.size();//_iLen = 9
//3.length()
_iLen = _vec.length();//_iLen = 9
5.清空
QVector<int> _vec(9,0);
//1.clear()
_vec.clear();
//2.removeAll()
int _iCount = _vec.removeAll(0);//删除所有0,返回删除元素个数
6.替换元素
//replace
QVector<int> _vec(3,0);//_vec = [0,0,0]
_vec.replace(0,1);//_vec = [1,0,0]
7.定位元素
QVector<int> _vec;
_vec[0] = 8;
_vec[1] = 4;
_vec[2] = 29;
_vec[3] = 4;
//1.indexOf()
int _index = _vec.indexOf(4);//_index = 1
//2.lastIndexOf()
_index = _vec.lastIndexOf(4);//_index = 3

三、类型转换

1.QVector 与 QList 之间的转换
//QVector ---> QList
QVector<int> _vec;
QList<int> _list = _vec.toList();
//QList ---> QVector
QList<int> _list;
QVector<int> _vec = QVector::fromList(_list);
2.QVector 与 Vector 之间的转换
//QVector ---> Vector
QVector<int> _vec;
Vector<int> _std = _vec.toStdVector();
//Vector ---> QVector
Vector<int> _std;
QVector<int> _vec = QVector::fromStdVector(_std);

四、遍历方式

1.for循环遍历
QVector<int > _vec(9,2);
for(int i = 0;i < _vec.size();i ++)
{
//1.数组方式
	int _item1 = _vec[i];
//2.at()
	int _item2 = _vec.at(i);
}
2.foreach遍历
QVector<int > _vec(9,2);
foreach(int var,_vec)
{
	int _item = var;
}
3.QVectorIterator迭代遍历
QVector<int> _vec(9,2);
QVectorIterator<int> _itor(_vec);
while(_itor.hasNext())
{
    qDebug()<<_itor.next()<<endl;
}
4.STL迭代遍历
QVector<int> _vec(9,2);
QVector<int>::iterator _itor;
for(_itor = _vec.begin();_itor != _vec.end();_itor ++)
{
	int _item = *_itor;
}

结尾:本期对于QVector类的讲解就到这,然后分享一个知识点:Vector(动态数组)的动态申请内存是按照2的指数级来申请的。

你可能感兴趣的:(#,QT,基础教程,qt,开发语言)