vector

vector是一个封装了动态大小数组的顺序容器。它可以存放各种类型的对象,并且严格地将它们按照线性顺序排序,可以用位置对它们进行索引。作为一种动态大小的数组,vector提供了在其末端进行快速添加和删除元素的操作。另外,vector使用一个容器分配器对象来动态的处理它的存储需求。

基本的方法

1.头文件

#include<vector>
using namespace std;

2.vector的构造

vector<int> nums;//初始化为空
vector<int> nums(10);//最大容量为10
vector<int> nums(10,0);//最大容量为10,初始化为0
int a[5]={1,2,3,4,5};
vector<int> nums(a,a+2);//得到a数组的前2个元素
vector< vector< int> > nums;//二维vector,注意最外的<>要有空格,否则在旧的编译器会报错

3.尾端增减

int main()
{vector<int> nums;for(int i=0;i<4;i++){nums.push_back(i);//尾端增加元素}for(int i=0;i<2;i++){nums.pop_back();//尾端删除元素}for(int i=0;i<nums.size();i++){printf("%d ",nums[i]);}printf("\n");return 0;
}

运行结果:

4.clear清空

int main()
{vector<int> nums;for(int i=0;i<4;i++){nums.push_back(i);}nums.clear();//清空vectorfor(int i=1;i<=2;i++){nums.push_back(i);}for(int i=0;i<nums.size();i++){printf("%d ",nums[i]);}printf("\n");return 0;
}

5.大小函数

int main()
{vector<int> nums(10,0);int n=nums.size();//返回vector的大小printf("%d\n",n);int x=nums.capacity();//返回vector的容量printf("%d\n",x);int d=nums.max_size();//返回vector可以存的最大的数printf("%d\n",d);return 0;
}

6.判断是否为空

int main()
{vector<int> nums(10,0);vector<int> nums1;int n=nums.empty();//非空返回falseprintf("%d\n",n);int x=nums1.empty();//为空返回trueprintf("%d\n",x);return 0;
}

7.erase()和insert()函数

定义迭代器

vector<int> nums;
vector<int>::iterator it;
it = nums.begin();//vector头指针,指向第一个元素
it = nums.end();//vector尾指针,指向最后一个元素的下一个位置

back()和front()函数

int main()
{vector<int> nums;vector<int>::iterator it;it = nums.begin();for(int i=0;i<=10;i++) nums.push_back(i);printf("%d\n",nums[nums.front()]);printf("%d\n",nums[nums.back()]);return 0;
}


insert()函数

int main()
{vector<int> nums;vector<int>::iterator it;for(int i=0;i<=10;i++) nums.push_back(i);it = nums.begin();for(int i=0;i<nums.size();i++){printf("%d ",nums[i]);}printf("\n");nums.insert(it,100);//vector中迭代器指向元素前增加1个元素100 for(int i=0;i<nums.size();i++){printf("%d ",nums[i]);}printf("\n");nums.insert(it+4,3,88);//vector中迭代器指向元素前增加3个元素88for(int i=0;i<nums.size();i++){printf("%d ",nums[i]);}printf("\n");return 0;
}


erase()函数

int main()
{vector<int> nums;vector<int>::iterator it;for(int i=0;i<=10;i++) nums.push_back(i);it = nums.begin();for(int i=0;i<nums.size();i++){printf("%d ",nums[i]);}printf("\n");nums.erase(it);//删除迭代器位置的元素 for(int i=0;i<nums.size();i++){printf("%d ",nums[i]);}printf("\n");nums.erase(it+1,it+3);//删除[1,3)之间的元素 for(int i=0;i<nums.size();i++){printf("%d ",nums[i]);}printf("\n");return 0;
}

8.swap()数据交换

int main()
{vector<int> nums;vector<int> nums1;vector<int>::iterator it;for(int i=0;i<=10;i++) nums.push_back(i);swap(nums,nums1);for(int i=0;i<nums1.size();i++){printf("%d ",nums1[i]);}printf("\n");return 0;
}

9.排序

int main()
{vector<int> nums;vector<int>::iterator it;for(int i=0;i<=10;i++) nums.push_back(20-i);sort(nums.begin(),nums.end());//从小到大 for(int i=0;i<nums.size();i++){printf("%d ",nums[i]);}printf("\n");reverse(nums.begin(),nums.end());//反转,从大到小排 for(int i=0;i<nums.size();i++){printf("%d ",nums[i]);}printf("\n");return 0;
}

10.at()函数得到编号位置的元素

int main()
{vector<int> nums;vector<int>::iterator it;for(int i=0;i<=10;i++) nums.push_back(i);printf("%d\n",nums.at(6));return 0;
}

11.vector 翻转

vector<int> nums;
reverse(nums.begin(),nums.end());

C++容器 vector(附代码实例讲解)相关推荐

  1. php垃圾回收算法分代,PHP的垃圾回收机制代码实例讲解

    PHP可以自动进行内存管理,清除不需要的对象,主要使用了引用计数 在zval结构体中定义了ref_count和is_ref , ref_count是引用计数 ,标识此zval被多少个变量引用 , 为0 ...

  2. 粒子群算法Particle Swarm Optimization超详细解析+代码实例讲解

    01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于对鸟群捕食的行为研究 ...

  3. 【智能算法】粒子群算法(Particle Swarm Optimization)超详细解析+入门代码实例讲解...

    喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由E ...

  4. 【编程实践】Git命令基础教程和代码实例讲解

    Git命令基础教程和代码实例讲解 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git与常用的版本控制工具CVS.Subversion等不同,它采用了分布式版本库的方式. ...

  5. 2022年华数杯C题插层熔喷完整解题思路(附代码+详细讲解视频)

    1.题目背景 C 题 插层熔喷非织造材料的性能控制研究 熔喷非织造材料是口罩生产的重要原材料,具有很好的过滤性能,其生产工艺简单.成本低.质量轻等特点,受到国内外企业的广泛关注. 熔喷非织造材料是口罩 ...

  6. html5的video标签实现对HLS(m3u8格式)的支持(附代码实例)

    html5的video标签实现对HLS(m3u8格式)的支持(附代码实例) <script src="https://cdn.jsdelivr.net/hls.js/latest/hl ...

  7. php hincrby,Thinkphp5+Redis实现商品秒杀代码实例讲解

    这篇文章主要介绍了Thinkphp5+Redis实现商品秒杀代码实例讲解,代码和步骤讲解的很清楚,有需要的同学可以借鉴参考下: 环境:wamp,redis 要求:安装WAMP,Redis,以及为PHP ...

  8. Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例)

    Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例) Java对象 转 JSON字符串 JAVA对象转MAP Map转java对象 List转map List和Map ...

  9. 遗传算法python实现_Python遗传算法代码实例讲解

    目录 实例: 求解函数的最大值y=xsin(10x)+xsin(2x),自变量取值:0--5,用Python画出的图像如下 (注:此代码好像有一些感觉不对的地方,首先:没有保留那些适应度低的个体 po ...

最新文章

  1. Python中将数据矢量化运算所带来的时间加快
  2. Oracle基本操作(二)
  3. 操作ex_【自学C#】|| 笔记 40 Command:操作数据库
  4. 如何使用Marketing Cloud的扩展字段作为搜索条件进行搜索
  5. JQuery中的API--操作DOM
  6. 【渝粤教育】21秋期末考试市场调查与预测10243k2
  7. 如何修改wince的网络配置
  8. CSS3文字渐变效果
  9. 左移和右移的运算规则_一文读懂JavaScript位的与、或、异或、取反及左移右移操作...
  10. selenium学习一
  11. 图像处理基础(四)_图像分辨率、图像模式及通道讲解
  12. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPP-net)
  13. 基于UNITY引擎开发的游戏源码修改方法
  14. 万能五笔2005输入法平台6.46版---试用手记
  15. Office Scan(OSCE)10.0客户端手动卸载
  16. Vue播放m3u8视频格式的视频监控(适合移动端和pc端),用了Video.js,以及多视频列表循环播放代码,已测试,可播放
  17. 基于I2C/SPI总线的温湿度采集与OLED显示
  18. 显示无法定位程序输入点_CxxFrameHandler4于动态链接库,该怎么解决?
  19. 使用omniverse:一张照片快速生成一个3D数字人
  20. Msfvenom的简单用法

热门文章

  1. 看了《我的白大褂》才明白,原来平安是福
  2. 嵌入式开发——rtc时钟调试笔记
  3. jsp 登陆成功后,显示登录的用户名
  4. Microchip Studio 7 程序的烧录操作
  5. 前端基础之浮动个人相册
  6. 性能测试指标及常用监控工具
  7. RabbitMQ(6)-Spring AMQP,Spring集成RabbitMQ
  8. linux 查看dns',linux 下查看DNS版本
  9. Tcar:智能车之基于mg995型号舵机的驱动控制模块
  10. 矩阵旋转(逆时针九十度