150725培训心得(vector)
2015-07-25 11:46
323 查看
vector(不定长数组)
在C语言中,数组定义必须给定长度,但是有的时候太浪费空间,可以利用STL中vector函数来解决这个问题。
1 基本操作
(1)头文件#include<vector>
(2)创建vector对象,vector<int> vec;
(3)尾部插入数字:vec.push_back(a);
尾部删除数字:vec.pop_back(a);
(4)使用下标访问元素,cout<<vec[0]<<endl; 记住下标是从0开始的。
(5)插入元素: vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;
(6)删除元素: vec.erase(vec.begin()+2);删除第3个元素
vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始
(7)向量大小:vec.size();
(8)清空:vec.clear();
(9)初始化:memset(vec,0,sizeof(vec));
(10)判空:vec.empyt(); 空则返回1,不空则返回0
vector<int>a就是一个类似于int a[]的整数数组,只不过他的长度不确定,可以用a.size()读取他的长度。
而vector<int>a[max]就是一个二维数组,只是第一维的大小是固定的(不超过max),二维的大小就不固定了,
有时候n太大了,如果直接建立二维数组a
,这样的二维数组绝对超出内存,就需要用到vector不定长的特性。
在C语言中,数组定义必须给定长度,但是有的时候太浪费空间,可以利用STL中vector函数来解决这个问题。
1 基本操作
(1)头文件#include<vector>
(2)创建vector对象,vector<int> vec;
(3)尾部插入数字:vec.push_back(a);
尾部删除数字:vec.pop_back(a);
(4)使用下标访问元素,cout<<vec[0]<<endl; 记住下标是从0开始的。
(5)插入元素: vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;
(6)删除元素: vec.erase(vec.begin()+2);删除第3个元素
vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始
(7)向量大小:vec.size();
(8)清空:vec.clear();
(9)初始化:memset(vec,0,sizeof(vec));
(10)判空:vec.empyt(); 空则返回1,不空则返回0
vector<int>a就是一个类似于int a[]的整数数组,只不过他的长度不确定,可以用a.size()读取他的长度。
而vector<int>a[max]就是一个二维数组,只是第一维的大小是固定的(不超过max),二维的大小就不固定了,
有时候n太大了,如果直接建立二维数组a
,这样的二维数组绝对超出内存,就需要用到vector不定长的特性。
相关文章推荐
- 斐波那契数列(大数)
- 【坑】html5中使用<canvas>画圆,弧度和角度傻傻分不清楚
- 自定义Adapter为什么会重复多轮调用getView?——原来是ListView.onMeasure在作祟
- Handler1
- 算法(第四版)学习笔记之java实现快速排序
- 深入理解FreeRTOS的任务机制和消息队列+附完整项目代码
- 大数据之Spark探秘:一.Spark简介
- hdu 1150 Machine Schedule(二分匹配,简单匈牙利算法)
- hdu 5289 单调队列
- Timer的用法
- 关于程序员面试的一点点看法
- PHP扩展类ZipArchive实现压缩解压Zip文件和文件打包下载
- ASP.NET MVC中如何实现页面跳转
- UK 更新惊魂记
- ZOJ - 1847 The Trip(奇葩诡异坑题)
- 开关进化论---从拉闸到无源无线
- C++回忆录:(一)new和malloc的区别
- 最简单的基于FFmpeg的移动端例子:Android 视频解码器-单个库版
- 按层逆遍历一棵树,使用满二叉树存储
- android简单的图片适配