[QT][C++]QVector学习编程实践|各类功能实现|代码实例

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

---------------------------------------
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值