[C++]STL-vector

一.了解STL

STL 即标准模板库(Standard Template Library),是“容器”的集合

STL核心库的基本概念有三个:容器(Containers),迭代器(iterators),算法(Algorithms)

STL内的所有组件都由模板(Template)构成,其元素可以是任意类型

STL容器:

常用顺序容器vector,deque,list
常用关联容器set,map
容器适配器stack,queue,priority_queue

常用的就是 vector(向量)

容器,听名字就能知道,这是和int a[100]之类的数组差不多的东西,vector就是一种数组

一个动态数组

动态数组顾名思义是一个元素个数可变的数组

他在定义的时候可以不需要像静态数组(int a[100]之类的)提前定义数组的空间

可以在后面的程序里直接往这个数组里塞数据 :P

二.定义vector

首先我们应该知道如何定义vector数组

在定义前,我们需要一个 #include<vector> 头文件

#include<vector>

之后。定义一个vector数组需要

vector<int> a;//a为数组(容器)名

一个int类型的vector数组就定义好了

我们还有其他构造vector容器的方式,比如:

vector<int> b(n);//定义一个元素个数为n的int类型的vector(数组内默认值为0)
vector<int> c(n,m);//定义一个元素个数为n,且元素都为m的int类型vector

比如vector<int> a(5);

就创建了一个int类型的元素个数为5的vector,因为没有定义,所以这里面的元素都为0

如果我们想定义vector里的初始值

我们可以用vector<int> a(5,8);

这样就创建了一个元素个数为5,且元素都为8的int类型的vector

当然不是定义了就只有这么多的元素,它毕竟是动态数组,可以在后面的程序插入元素 :L

三.vector的函数

1.获取数组长度

之后我们可以使用 数组名.size() 来查看一个容器中实际元素的个数

就像这样:

printf("%d",a.szie());//返回为0
printf("%d",b.szie());//返回为5
printf("%d",c.szie());//返回为5

我们这个新定义的vector a中什么也没有,故a.size()返回的值是0

vector b 与 vector c前面定义了元素个数为5,故返回值都是5

2.存放数据

之后,我们拿他们肯定是用来存数的

可是怎么存数?

不是像静态数组直接使用下标输入

在定义vector a时,我们可以看到没有任何定义数组大小的地方

所以就不能使用下标直接把数据存进去

把一个数据放进这样一个vector数组中

我们可以用push_back()函数

像这样:

a.push_back(10);

我们就把一个数字10放进了数组a的末尾

那么这样,a.size()返回的值就是1了,因为数组中有10这1个元素;

同理 如果对vector b或c进行push_back(10) 函数操作 就会把数字10放入b或c的末尾

b 和 c的size()返回值就是6了;

:D

3.访问数组内的数据

在vector有了数据之后

就可以像静态数组一样使用下标访问了

be like:

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

:P

4.插入、删除、获取头尾元素

想批量插入或删除vector中的元素?

可以使用insert和eraser函数

获取头尾元素可以使用.front和.back函数

insert函数的使用方式是:insert(位置头,位置尾,元素)

eraser函数的使用方式是:eraser(位置头,位置尾)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值