关于C++_STL——vector容器的使用

往期推荐:关于C++自定义函数的参数以及传输数值或地址

写在前面的话

在力扣上刷了一段时间的题,经常用到vector,于是便整理出了这篇文章。
vector是向量类型,可以容纳C++几乎所有类型的数据,因此也被称为容器
当然,也可以理解为动态数组,是STL帮我们封装好了的类
进行vector操作前应添加头文件#include<vector>(当然,如果你用万能库,当我没说)

目录

  1. vector初始化
  2. vector自带函数
  3. vector其他操作与易错点

1. vector初始化

这一板块将展现如何声明与初始化一个vector容器。

方式Ⅰ:
一个最常规的初始化,不规定任何的大小与初始值。

vector<x> y; //定义一个x类型的容器y

方式Ⅱ:
运用这种方式,你可以规定一个容器的大小,嗯,就像数组一样。

vector<x> y(z); //z是一个数字,该语句表示定义一个大小为z的x类型容器y

方式Ⅲ:
好消息是,方式Ⅲ不仅可以规定容器的大小,还可以给容器的每个元素以一个初始值。

vector<x> y(z, h); //h是一个x类型的变量,会赋值给类型为x,大小为z的容器中的每个元素

方式Ⅳ:
vector最高端的地方在于,你可以用以下这种语法,将一个已经操作过的动态数组直赋值给这个新定义的vector!

vector<x> y(z); //用容器z向y赋值(类型同为x),使两者完全等价

方式Ⅴ:
nb的 vector甚至可以从另一个容器中抽出特定的几个元素赋初始值!

vector<x> y(z.begin(),z.begin+3);//将z中第0-2个元素赋值给y,y的类型为x型

2. vector自带函数

用一段代码讲解吧……

#include <vector>
vector<int> a, b;

a.front(); //返回a的第一个元素

a.back(); //返回a的最后一个元素

a.clear(); //清空a中的元素

a.empty(); //判断a是否为空,空则返回true,非空则返回false

a.pop_back(); //删除a向量的最后一个元素

a.push_back(3); //在a的最后一个向量后插入一个元素,其值为3

a.erase(a.begin()+1,a.begin()+3); //删除第二个到第四个元素(左开右闭)
//上面的erase是清除多个元素,接下来的是只清除一个元素的写法
a.erase(a.begin() + 1); //清除第二个元素 

a.size(); //返回a中元素的个数

a.swap(b); //b为向量,将a中的元素和b中的元素整体交换

注:vector没有 pop_front()push_front() 函数
还有一些其他酷毙了的函数,这里因为篇幅关系,不一一展现。

3.vector其他操作与易错点

调用*(容易出错)

虽然vector容器与数组有诸多不同,但是就调用而言,可以说是十分类似。

a[i]; //当且仅当a[i]存在

是的你没看错,和数组几乎一模一样,这句话的意思是调用了容器a的第i个元素。

那么接下来看这段代码,请判断它的正确与否。

#include <bits/stdc++.h>
#include <vector>
using namespace std;
vector<int> a;
int main() {
	for(int i = 0; i < 10; i ++) a[i] = i;
}

想必细心的同志已经发现了,不对!为什么?注意上文的一句注释:

当且仅当a[i]存在

a[0~9]在上文并不存在,我们也没有向a内压入或者赋值什么元素,这就是整个问题的关键。

比较

vector也有大小的比较,需要注意的是,只有每个元素都是相等的,两个容器才算是相等。

vector<int> a, b;
a == b;
a >= b;
a <= b;
a > b;
a < b;
a != b; 

其实,vector这个玄学玩意儿在很多地方和其他东西都是类似的。


都看到这里了,这位仁兄,点个免费的赞再走呗

I am very vegetable.
参考文献:C++_vector操作

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值