C++之Vector详解|即学即会


前言

vector是C++标准模板库中的部分内容,通常我们喊做“容器”,但并不准确。它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。


提示:以下是本篇文章正文内容,下面案例可供参考

一、为什么要用Vector?

首先,这要从C语言中寻求答案。我们来看一下C语言实现一个数组
//声明并初始化
1int a[5]={1,2,3,4,5};
或者
2int b[]={1,2,3,4,5};
上面两种方式都可以,第二种方式完成的同时会根据大括号里数据的个数
指定数组的长度
分别打印一下两个数组的长度
	printf("a数组的长度:%d\n", sizeof(a) / sizeof(a[0]));
	printf("b数组的长度:%d\n", sizeof(b) / sizeof(b[0]));
得到结果:

在这里插入图片描述
此时如果我们打印出a[6]这个元素

printf("a[6]:%d\n", a[6]);

在这里插入图片描述
会发现此时打印出一个很大的数,而且每次运行打印的数据都不相同,这里就存在一个数据溢出的问题。这就成为黑客们经常攻击的手段。C语言一开始是为了实现其性能所以在安全性方面会有些舍弃。所以这才衍生了Vector类。

二、Vector的优缺点

优点

① 使用的时候无须声明上限,随着元素的增加,Vector的长度会自动增加;

② Vector类提供额外的方法来增加、删除元素,比数组操作高效。

缺点

① 时间:运行速度与数组相比较慢。

②空间:clear()无法清空内存

三、Vector的声明与初始化

1、vector 可以声明各种类型的数组,整型、字符型、字符串等等。

//整形数组
 vector <int> vec = { 1,2,3,4,5};
//char型数组
 vector <char> vec1 = {'h','e','l' ,'l' ,'o' };
 //字符串数组
 vector <string> vec1 = {"Hello","world"};
 等等...
2、vector灵活的初始化方式
1、vector <int> vec(10);//定义一个含10个变量的整型数组vec,默认值都为0
2、vector <int> vec(10,2);//定义一个含10个变量的整型数组vec,默认值都为2
3、vector<int>  vec(a);//其中a也是vector,把a整体赋值给vec
4、vector<int> vec(a.begin(),a.begin+1);//把a的从开始到第二个赋值给vec

总结:我们可以看出vector的初始化方式多种多样十分的灵活。

四、Vector的常用方法

代码如下(这些方法基本上可以满足我们的需求了,一定要牢牢掌握):

vector <int> a;
1、a.assign(4,2); //是a只含4个元素,且每个元素为2
2、a.back(); //返回a的最后一个元素
3、a.front(); //返回a的第一个元素
4、a.clear(); //清空a中的元素
5、a.empty(); //判断a是否为空,空则返回ture,
			  //不空则返回false
6、a.pop_back(); //删除a向量的最后一个元素
7、a.push_back(5); //在a的最后一个向量后插入一个5
8、a.insert(a.begin()+2,7); //在a的第2个元素
//(从第0个算起)的位置插入数值5,如a为1,2,3,4
//插入元素后为1,2,7,3,4
9、a.size(); //返回a中元素的个数;
10、a.capacity(); //返回a在总共可以容纳的元素个数
11、a.resize(5); //将a的元素个数调至5个,多删少补,
//补的值默认为0
12、a.resize(5,1); //将a的现有元素个数调至5个,
多删少补,补的值为1,如原来a为[1,2,3,4],补完
为[1,2,3,4,1],之前的值不变
13、a.reserve(10); //将a的容量(capacity),扩充至10
14、)a.swap(b); //b为向量,将a和b中的进行整体交换


总结

以上就是今天要讲的内容,本文简单介绍了C++中vector的使用。希望大家多多支持,关注一下!!!你们的支持是我更新的动力。如果有任何问题可以直接私信我哦!!!!!!如果私信没回可以加本人QQ:1458356834
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YZW0123

谢谢大家的支持,请关注我哦!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值