C++容器 vector(附代码实例讲解)
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(附代码实例讲解)相关推荐
- php垃圾回收算法分代,PHP的垃圾回收机制代码实例讲解
PHP可以自动进行内存管理,清除不需要的对象,主要使用了引用计数 在zval结构体中定义了ref_count和is_ref , ref_count是引用计数 ,标识此zval被多少个变量引用 , 为0 ...
- 粒子群算法Particle Swarm Optimization超详细解析+代码实例讲解
01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于对鸟群捕食的行为研究 ...
- 【智能算法】粒子群算法(Particle Swarm Optimization)超详细解析+入门代码实例讲解...
喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由E ...
- 【编程实践】Git命令基础教程和代码实例讲解
Git命令基础教程和代码实例讲解 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git与常用的版本控制工具CVS.Subversion等不同,它采用了分布式版本库的方式. ...
- 2022年华数杯C题插层熔喷完整解题思路(附代码+详细讲解视频)
1.题目背景 C 题 插层熔喷非织造材料的性能控制研究 熔喷非织造材料是口罩生产的重要原材料,具有很好的过滤性能,其生产工艺简单.成本低.质量轻等特点,受到国内外企业的广泛关注. 熔喷非织造材料是口罩 ...
- html5的video标签实现对HLS(m3u8格式)的支持(附代码实例)
html5的video标签实现对HLS(m3u8格式)的支持(附代码实例) <script src="https://cdn.jsdelivr.net/hls.js/latest/hl ...
- php hincrby,Thinkphp5+Redis实现商品秒杀代码实例讲解
这篇文章主要介绍了Thinkphp5+Redis实现商品秒杀代码实例讲解,代码和步骤讲解的很清楚,有需要的同学可以借鉴参考下: 环境:wamp,redis 要求:安装WAMP,Redis,以及为PHP ...
- Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例)
Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例) Java对象 转 JSON字符串 JAVA对象转MAP Map转java对象 List转map List和Map ...
- 遗传算法python实现_Python遗传算法代码实例讲解
目录 实例: 求解函数的最大值y=xsin(10x)+xsin(2x),自变量取值:0--5,用Python画出的图像如下 (注:此代码好像有一些感觉不对的地方,首先:没有保留那些适应度低的个体 po ...
最新文章
- Python中将数据矢量化运算所带来的时间加快
- Oracle基本操作(二)
- 操作ex_【自学C#】|| 笔记 40 Command:操作数据库
- 如何使用Marketing Cloud的扩展字段作为搜索条件进行搜索
- JQuery中的API--操作DOM
- 【渝粤教育】21秋期末考试市场调查与预测10243k2
- 如何修改wince的网络配置
- CSS3文字渐变效果
- 左移和右移的运算规则_一文读懂JavaScript位的与、或、异或、取反及左移右移操作...
- selenium学习一
- 图像处理基础(四)_图像分辨率、图像模式及通道讲解
- Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPP-net)
- 基于UNITY引擎开发的游戏源码修改方法
- 万能五笔2005输入法平台6.46版---试用手记
- Office Scan(OSCE)10.0客户端手动卸载
- Vue播放m3u8视频格式的视频监控(适合移动端和pc端),用了Video.js,以及多视频列表循环播放代码,已测试,可播放
- 基于I2C/SPI总线的温湿度采集与OLED显示
- 显示无法定位程序输入点_CxxFrameHandler4于动态链接库,该怎么解决?
- 使用omniverse:一张照片快速生成一个3D数字人
- Msfvenom的简单用法