基本概念和介绍

vector和数组非常相似,不同的是数组所申请是静态空间,也就是说数组的长度在数组定义的时候就已经确定下来了,但是vector可以进行动态分配,随着元素的插入和删除,vector的长度也会随之改变。节省了空间。

#include<vector>

常见的操作

先说一下什么是API,API就是应用程序编程接口(Application Programming Interface),说得更加通俗易懂一些,别人编译好的程序,提供给你使用,就叫做API。你使用了别人代码(或者程序)中的某个函数、类、对象,就叫做使用了某个API。

有些函数,要传入的不仅是普通的参数,你还要传入对应的: 迭代器,所谓迭代器,就是一种泛化的指针,因为指针本身就是一种迭代器,像下面讲解的insert()函数中要传入的v.begin()就是一种迭代器,以及在PrintVector打印输出中,也需要使用到迭代器,此处不做过多详解;

void PrintVector(vector<int>& v)
{
for (auto x : v)
{
cout << x << " ";
}
cout << endl;
}

接下来回归正题 :

构造函数
常见的构造方式有四种,一般我们会前两种就可以

vector<int> v1;	//1.默认构造,无参构造

for (int i = 0; i < 10; ++i)
{
v1.push_back(i);
}
PrintVector(v1);

//2.利用区间方式构造
vector<int> v2(v1.begin(), v1.end());
PrintVector(v2);

//3.n个element方式构造
vector<int> v3(10, 100); //10个100
PrintVector(v3);

//4.拷贝构造
vector<int> v4(v3);
PrintVector(v4);

赋值操作

赋值的话可以使用assign()函数,也可以使用其他方式

//直接赋值
vector<int> v2;
v2 = v1;

//assign赋值
vector<int> v3;
v3.assign(v1.begin(), v1.end());

//n个element赋值
vector<int> v4;
v4.assign(10, 100);

插入和删除

插入主要是使用push_back(),也可使用insert();删除操作主要是pop_back(),也可使用erase()

vector<int> v;
//尾插
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(40);
v.push_back(50);

PrintVector(v);

//尾删
v.pop_back();
PrintVector(v);

//插入 - 提供迭代器
v.insert(v.begin(), 100);
PrintVector(v);

//重载
v.insert(v.begin(), 2, 100);
PrintVector(v);

//删除 - 提供迭代器
v.erase(v.begin());
PrintVector(v);

//重载
v.erase(v.begin(), v.end()); //相当于清空操作
PrintVector(v);

v.clear(); //清空容器中所有元素
PrintVector(v);

容量和大小

对于容量用的是capacity(),对于大小是size(),当然你也可以用resize()来改变其大小,不够在此之前都需用empty()这个函数来判断一下容器是否为空;

	vector<int> v;

for (int i = 0; i < 10; ++i)
{
v.push_back(i);
}
PrintVector(v);

if (v.empty())
{
cout << "vector容器为空" << endl;
}
else
{
cout << "vector容器不为空" << endl;
cout << "vector容器的容量为:" << v.capacity() << endl;
cout << "vector容器的大小为:" << v.size()<< endl;
}

//重新指定大小 - 变大
// v.resize(15);
v.resize(15,10); //重载
PrintVector(v);

//重新指定大小 - 变小
v.resize(5);
PrintVector(v); //超过部分将会删除

除此之外还有很多函数,例如at()返回元素,front()返回首元素,back()返回尾元素,clear()清空容器等等,这里列举比较常用的,想深入了解的小伙伴可以参考这个网站cplusplus