C++ | vector的初始化和使用
arr; arr.push_back(9); arr.push_back(3); arr.push_back(5); arr.push_back(5); arr.push_back(7); arr.push_back(5); arr.push_back(3); arr.push_back(4); arr.push_back(2); arr.push_back(1); cout<<"arr.push_back() : "; for(int i = 0;i
::iterator oldend = arr.end(); vector ::iterator newend; newend = unique(arr.begin(),arr.end()); arr.erase(newend,oldend); cout<<"unique():"; for(int i = 0;i
发布日期:2021-07-25 15:44:05
浏览次数:10
分类:技术文章
本文共 2381 字,大约阅读时间需要 7 分钟。
STL | vector的初始化和使用
vector
指向量,可以理解为“变长数组
”,长度根据需要而自动改变的数组。有时会碰到普通数组会超过内存的情况,可以使用vector
解决。- 而且,
vector
可以用来以邻接表的方式存储图,可以解决当节点数太多,无法使用邻接矩阵,又害怕使用指针实现邻接表的时候,使用很简单。
01 vector的初始化
1⃣️ 默认初始化
vector ilist1;
vector
为空,size
为0,表明容器中没有元素,而且capacity
也返回 0,意味着还没有分配内存空间。- 这种初始化方式适用于元素个数未知,需要在程序中动态添加的情况。
二维数组的定义
vector> name;vector Arrayname[arraySize];//区别是第二种的一维长度事先固定了。
2⃣️ 通过同类型的vector进行初始化
vector ilist2(ilist); vector ilist2 = ilist;
- 这两种方式等价 ,
ilist2
初始化为ilist
的拷贝,ilist
必须与ilist2
类型相同,也就是同为int
的vector
类型,ilist2
将具有和ilist
相同的容量和元素。
3⃣️ 通过迭代器进行初始化
vector ilist3(ilist.begin()+2,ilist.end()-1);
ilist3
初始化为两个迭代器
指定范围中元素的拷贝,范围中的元素类型必须与ilist3
的元素类型相容,在本例中ilist3
被初始化为{3,4,5,6}。- 这种初始化方法特别适合于获取一个序列的子序列。
4⃣️ 带参数的构造函数初始化
vector ilist4(7);
- 默认值初始化,
ilist4
中将包含7个元素,每个元素进行缺省的值初始化,对于int
,也就是被赋值为0,因此ilist4
被初始化为包含7个0。 - 当程序运行初期元素大致数量可预知,而元素的值需要动态获取的时候,可采用这种初始化方式。
5⃣️ 带参数的构造函数初始化
vector ilist5(7,3);
- 指定值初始化,
ilist5
被初始化为包含7个值为3的int
。
6⃣️ 通过数组地址初始化
int a[5]={1,2,3,4,5}vector vec_i(a,a+5);
02 vector的使用
#includevector arr;arr.push_back(9);//在arr结尾插入数字9arr.pop_back();//删除arr末尾最后一个项arr.front();//arr的第一个项的值arr.back();//arr的最后一个项的值arr.begin();//arr的第一个项的指针arr.end();//arr的最后一个项的指针arr.size();//arr的实际长度arr.erase(arr.begin(),arr.end());//删除从arr的第一个到最后一个项arr.insert(arr.begin(),5);//在arr的头之前插入数字5arr.insert(arr.begin(),6,5);//在arr的头之前插入6个5arr.empty();//判断arr是否为空arr.clear();//将arr清空
#includesort(arr.begin(),arr.end());//对vector排序stable_sort(arr.begin(),arr.end());//对vector稳定排序reverse(arr.begin(),arr.end());//反转vectorvector ::iterator newend = unique(arr.begin(),arr.end());//对arr去重,并把去重后的实际个数存在迭代器newend里面arr.erase(newend,arr.end());//把从newend到arr最后一项(即重复的数字)去除ces
测试代码
#include#include #include using namespace std;int main(){ cout<<"Vector functions:"<
转载地址:https://blog.csdn.net/qq_34170700/article/details/104090375 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月01日 16时51分22秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Unity 5 AudioMixer
2019-04-27
Unity 代码混淆: CodeGuard的使用
2019-04-27
UGUI 列表循环使用
2019-04-27
使用命令行运行unity并执行某个静态函数(运用于命令行打包和批量打包)
2019-04-27
web.py框架
2019-04-27
web.py学习笔记
2019-04-27
python的代码缩进
2019-04-27
A* Pathfinding Project (Unity A*寻路插件) 使用教程
2019-04-27
bash学习笔记
2019-04-27
sqlite学习
2019-04-27
手把手教你实现Unity与Android的交互
2021-06-30
手把手教你使用Unity的Behavior Designer
2021-06-30
Unity3D摄像机裁剪——NGUI篇
2021-06-30
lua深拷贝一个table
2021-06-30
app运行提示Unable to Initialize Unity Engine
2021-06-30
spring boot 与 Ant Design of Vue 实现修改按钮(十七)
2021-06-30
spring boot 与 Ant Design of Vue 实现删除按钮(十八)
2021-06-30
spring boot 与 Ant Design of Vue 实现新增角色(二十)
2021-06-30
spring boot 与 Ant Design of Vue 实现修改角色(二十一)
2019-04-27