IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> [QT][C++]QVector学习编程实践|各类功能实现|代码实例 -> 正文阅读

[C++知识库][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

---------------------------------------
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:05:39  更:2022-04-09 18:07:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:50:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码