前言:
有些时候想开一个数组,但是不知道开多大长度的数组合适,因为我们要用到的数组可能会根据情况变得变动。这时候我们就要用到动态数组。所谓动态数组,也就是不定长数组,数组的长度是可以根据我们的需要动态改变的。动态数组的实现也不难,但是在C++里面已经有写好的标准模板库,就是我们常说的STL库,实现了集合、映射、栈、队列等数据结构和排序、查找等算法。我们可以很方便的调用我们的标准库来减少我们的代码量。
C++动态数组写作vector,C语言中没有标准库,所以在蓝桥杯参赛时建议使用C++的原因!
引用库
C++中vector的实现在一个<vector>头文件中,在代码开头引入这个头文件,并在引入所有头文件之后加上一句ueing namespace std。
构造一个动态数组
C++中直接构造一个Vector的语句是:vector<T>vec 这样我们定义了一个名为vec的存储T类型的动态数组。
数组名是vec,存储数据类型是T
例如vector<int>a;表示定义了整型变量数组名为T的动态数组!
插入元素
C++中通过push_back()方法在数组最后面插入一个新的元素。
注意要用数组名去引线!
括号里面的数就是新的元素,且从数组最后一个元素插入!
#include<vector>
using namespace std;
int main()
{
vector<int> a;//[]
a.push_back(1);//[1]
a.push_back(2);//[1,2]
a.push_back(3);//[1,2,3]
return 0;
}
获取长度并且访问元素
直接size()即为访问元素,注意也要用数组名去引线!
打印元素时跟正常数组一样直接数组名[] 不要加 . !
#include<vector>
using namespace std;
int main()
{
vector<int> a;//[]
a.push_back(1);//[1]
a.push_back(2);//[1,2]
a.push_back(4);//[1,2,4]
for (int i=0;i<a.size(); i++)
{
cout << a[i] << ' ';
}
return 0;
}
输出结果:
修改元素
跟正常修改数组中的某一位元素一样
且动态数组的下标也是从0开始,修改数组中的某一位元素的前提就是他的下标是合法的。
输出结果就是1 1 1
删除元素
C++通过pop_back()来实现
使用方法和插入元素push_back()用法相同(要用数组名作为引言)
并且都是从最后一个元素开始删除
输出结果就是1 1,删除了一个
清空元素
使用clear()函数即为清空函数,
也是数组名进行引线!
总结
数组名.push_back(1) 表示创建动态数组元素,从头开始
数组名.pop_back() 表示删除动态数组的最后一个元素
两者区别在于创建元素时括号内声明创建的第一个元素的值到底是什么!
而pop_back()括号内什么也不不写,因为是删除最后一个元素。