QVector学习实践
本文主要包含关于QVector
的以下基础用法。可运行代码查看运行结果,对照结果进行学习。
- 定义-变量定义
- 调整向量长度 v.size()
- 向量清除v.clear() &&空向量判断 v.empty()
- 赋值-vector3(3,2)定义时赋值
- 赋值-<<枚举法元素赋值
- 赋值-fill(x)函数填充
- 索引值-v.at(i)只读模式索引(速度更快)
- 索引值-v[i]可写模式索引
- 索引值-indexOf(x)根据元素的值反过来来索引其序号
- 索引值-头部v.first()和尾部v.end()的元素值
- 插入-v.insert(i,x)在向量中间插入值
- 插入-v.prepend(x)在向量头部插入元素
- 插入-append(x)在向量尾部插入元素
- 插入-v.push_back(),等价于 v.append() ; v.push_front,等价于v.prepend()
- 取出- v.pop_back(),等价于 v.removeLast(),等价于v.remove(vector11.size()-1)) ;v.pop_front(),等价于 v.removeFirst(),等价于v.remove(0)
- 取出-v.remove(i)取出特定位置的元素。后面的元素向前补。
程序实践
#include <QVector>
#include <iostream>
#include <QString>
void showElement(QVector<int> a)
{
//打印元素
std::cout << "---------------------------------------"<<std::endl;
std::cout<<"vector element:"<<std::endl;
for(int i=0;i<a.size();i++){
std::cout << a[i] << std::endl;
}
std::cout << "---------------------------------------"<<std::endl;
}
void showOnlyRead(QVector<int> a ){
//只读模式读取变量
std::cout << "---------------------------------------"<<std::endl;
for(int i = 0;i<a.size();i++){
std::cout<< a.at(i)<<std::endl;
}
std::cout << "---------------------------------------"<<std::endl;
}
void showElement_string(QVector<QString> a)
{
//打印元素
QString s;
std::cout << "---------------------------------------"<<std::endl;
std::cout<<"vector element:"<<std::endl;
for(int i=0;i<a.size();i++){
printf("%s\n",a[i].toStdString().data());
}
std::cout << "---------------------------------------"<<std::endl;
}
//void showString(QString d){
// for()
//}
int main(int argc, char *argv[])
{
//定义-变量定义
QVector<int> vector0;
QVector<int> vector1(100);
std::cout<<"vector0 size:"<<vector0.size()<<std::endl;
std::cout<<"vector1 size:"<<vector1.size()<<std::endl;
std::cout << "---------------------------------------"<<std::endl;
//调整向量长度 v.size()
vector1.resize(10);
std::cout<<"vector1 size:"<<vector1.size()<<std::endl;
std::cout << "---------------------------------------"<<std::endl;
//向量清除v.clear() &&空向量判断 v.empty()
vector1.fill(10);
std::cout << "Before clear"<<std::endl;
showElement(vector1);
if(vector1.empty()){
std::cout << "vector1 is empty"<<std::endl;
}
vector1.clear();//清除所有元素。向量变成一个空向量。
std::cout << "After clear"<<std::endl;
std::cout<<"vector1 size:"<<vector1.size()<<std::endl;
if(vector1.empty()){
std::cout << "vector1 is empty"<<std::endl;
}
//赋值-vector3(3,2)定义时赋值
QVector<int> vector3(3,2);//3个元素,都为2
QVector<int> vector2(3,1);//3个元素,都为1
//赋值-<<枚举法元素赋值
QVector<int> vector4;
vector4 << 1<<2<<3<<4;//4个元素,分别为1,2,3,4
std::cout << "vector4";
showOnlyRead(vector4);
//赋值-fill(x)函数填充
QVector<int> vectorf(3);
vectorf.fill(4);//把向量所有元素都赋值为4
std::cout << "vectorf";
showOnlyRead(vectorf);
//索引值-v.at(i)只读模式索引(速度更快)
std::cout << "vector3";
showOnlyRead(vector3);
//索引值-v[i]可写模式索引
std::cout << "vector2";
showElement(vector2);
//索引值-indexOf(x)根据元素的值反过来来索引其序号
QVector<QString> vector8;
vector8<<"John"<<"Marry"<<"Tom"<<"Bill"<<"Jessy"<<"Michel"<<"Tom"<<"Bill";
showElement_string(vector8);
int Tom_index = vector8.indexOf("Tom",0);//从0开始找
int Tom_index_2 = vector8.indexOf("Tom",4);//从4开始找
std::cout << "Tom index is :"<<Tom_index<<std::endl;
std::cout << "Tom index_2 is :"<<Tom_index_2<<std::endl;
std::cout << "---------------------------------------"<<std::endl;
//索引值-头部v.first()和尾部v.end()的元素值
QVector<int> vector9;
vector9 << 10 << 20 << 30;
std::cout << "vector9"<<std::endl;
std::cout << "first element :"<<vector9.first()<<std::endl;//返回的是第一个元素的值。
std::cout << "end element :"<<vector9.end()<<std::endl;//返回的是最后第一个元素后面的假想项。
std::cout << "---------------------------------------"<<std::endl;
//插入-v.insert(i,x)在向量中间插入值
QVector<int> vector5;
vector5 << 1<<2<<3<<4;//4个元素,分别为1,2,3,4
vector5.insert(2,8);//在第3个元素位置插入8,然后3之后的元素往后排。
std::cout << "vector5";
showOnlyRead(vector5);
//插入-v.prepend(x)在向量头部插入元素
QVector<int> vector6;
vector6 << 1<<2<<3<<4;//4个元素,分别为1,2,3,4
vector6.prepend(10);
vector6.prepend(11);
vector6.prepend(12);
std::cout << "vector6";
showOnlyRead(vector6);
//插入-append(x)在向量尾部插入元素
QVector<int> vector7;
vector7 << 1<<2<<3<<4;//4个元素,分别为1,2,3,4
vector7.append(7);
vector7.append(8);
vector7.append(9);
std::cout << "vector7";
showOnlyRead(vector7);
//插入-v.push_back(),等价于 v.append() ; v.push_front,等价于v.prepend()
QVector<int> vector10;
vector10 << 10 << 20 << 30;
std::cout << "vector10"<<std::endl;
vector10.push_back(40);
// vector10.append(40);
vector10.push_front(50);
// vector10.prepend(50);
showElement(vector10);
//取出- v.pop_back(),等价于 v.removeLast(),等价于v.remove(vector11.size()-1)) ;
// v.pop_front(),等价于 v.removeFirst(),等价于v.remove(0)
QVector<int> vector11;
vector11 << 11 << 22 << 33;
std::cout << "vector11"<<std::endl;
vector11.pop_back();
// vector11.removeLast();
// vector11.remove(vector11.size()-1);
vector11.pop_front();
// vector11.removeFirst();
// vector11.remove(0);
showElement(vector11);
//取出-v.remove(i)取出特定位置的元素。后面的元素向前补。
QVector<int> vector12;
vector12 << 1 << 2 << 3 << 4;
std::cout << "vector12"<<std::endl;
vector12.remove(1);
showElement(vector12);
return 0;
}
运行结果:
vector0 size:0
vector1 size:100
---------------------------------------
vector1 size:10
---------------------------------------
Before clear
---------------------------------------
vector element:
10
10
10
10
10
10
10
10
10
10
---------------------------------------
After clear
vector1 size:0
vector1 is empty
vector4---------------------------------------
1
2
3
4
---------------------------------------
vectorf---------------------------------------
4
4
4
---------------------------------------
vector3---------------------------------------
2
2
2
---------------------------------------
vector2---------------------------------------
vector element:
1
1
1
---------------------------------------
---------------------------------------
vector element:
John
Marry
Tom
Bill
Jessy
Michel
Tom
Bill
---------------------------------------
Tom index is :2
Tom index_2 is :6
---------------------------------------
vector9
first element :10
end element :0x5596539ded84
---------------------------------------
vector5---------------------------------------
1
2
8
3
4
---------------------------------------
vector6---------------------------------------
12
11
10
1
2
3
4
---------------------------------------
vector7---------------------------------------
1
2
3
4
7
8
9
---------------------------------------
vector10
---------------------------------------
vector element:
50
10
20
30
40
---------------------------------------
vector11
---------------------------------------
vector element:
22
---------------------------------------
vector12
---------------------------------------
vector element:
1
3
4
---------------------------------------