【零基础算法】Vector动态数组

【零基础算法】Vector动态数组_第1张图片

        为什么开始先更新数据结构?博主其实一开始也不怎么喜欢调这些数据,觉得用C语言造轮子才是最好的。后面学习过程中学习的算法逐渐复杂,实际上会发现,了解和调用一些已经写好的库工具是很方便的一件事,我们需要做的是知道如何它的底层和如何实现即可,不需要总是用C语言去造轮子。

 一,定义

vector为可变长数组(动态数组),可以随时添加数值和删除元素。同时需要注意:在局部函数中开vector数组是在堆空间开辟的。使用时需要包含头文件

二,初始化

(1)一维初始化

vector num;
vector num;
vector num;

(2)指定长度和初始化

vector num(n);
//长度为n的动态数组
//指定长度之后就相当于正常数组

(3)初始化多个元素

vector num{1,2,3,4,5}

(4)拷贝初始化

vector num(n+1,0);
vector num2(num);
//拷贝初始化时要注意类型要相同

(5)二维初始化

vector num[5];
//第一位固定为5,第二维长度可变

vector>num;
//行列长度均可变

vector支持随机访问和下标访问 

三,相关函数

函数 作用
front() 返回第一个数据
pop_back()

删除最后一个数据

push_back()

在尾部加一个数据

size()

返回数据类型(unsigned类型!!!!)

clear()

清除所有元素

resize(n,v) 改变数组大小为n,n个空间赋值v(不指定默认为0)
insert(it,x)

向迭代器it处插入一个元素

erase(first,last) 删除(first,last)元素
begin()

返回首元素迭代器

end()

返回最后一个元素后一个位置的迭代器

empty() 判断是否为空。

排序可以使用sort(num.begin(),num.end());

迭代器:

vector num
vector::iterator it = num.begin();

你可能感兴趣的:(c++,开发语言)