浅谈C++ STL vector 容器
浅谈C++ STL vector 容器
本篇随笔简单介绍一下\(C++STL\)中\(vector\)容器的使用方法和常见的使用技巧。\(vector\)容器是\(C++STL\)的一种比较基本的容器。我们在学习这个容器的时候,不仅要学到这个容器具体的使用方法,更要从中体会\(C++STL\)的概念。
vector容器的概念
\(vector\)在英文中是矢量的意思。如果学过高中数学必修四的平面向量或者高中物理必修一的第一节课对其会有一个直观的认识。但是在\(STL\)中,\(vector\)和物理、几何等东西没有任何关系。
我们知道,一个数组必须要有固定的长度,在开一个数组的时候,这个长度也就被静态地确定下来了。但是\(vector\)却是数组的“加强版”,对于一组数据来讲,你往\(vector\)里存多少数据,\(vector\)的长度就有多大。也就是说,我们可以将其理解为一个“变长数组”。
事实上,\(vector\)的实现方式是基于倍增思想的:假如\(vector\)的实际长度为\(n\),\(m\)为\(vector\)当前的最大长度,那么在加入一个元素的时候,先看一下,假如当前的\(n=m\),则再动态申请一个\(2m\)大小的内存。反之,在删除的时候,如果\(n\ge \frac{m}{2}\),则再释放一半的内存。
vector容器的声明
\(vector\)容器存放在模板库:#include<vector>
里,使用前需要先开这个库。
\(vector\)容器的声明遵循\(C++STL\)的一般声明原则:
容器类型<变量类型> 名称
例:
#include<vector>
vector<int> vec;
vector<char> vec;
vector<pair<int,int> > vec;
vector<node> vec;
struct node{...};
vector容器的使用方法
\(vector\)容器的使用方法大致如下表所示:
用法 | 作用 |
---|---|
vec.begin(),vec.end() |
返回vector的首、尾迭代器 |
vec.front(),vec.back() |
返回vector的首、尾元素 |
vec.push_back() |
从vector末尾加入一个元素 |
vec.size() |
返回vector当前的长度(大小) |
vec.pop_back() |
从vector末尾删除一个元素 |
vec.empty() |
返回vector是否为空,1为空、0不为空 |
vec.clear() |
清空vector |
除了上面说过的那些之外,我们的\(vector\)容器是支持随机访问的,即可以像数组一样用\([\,\,]\)来取值。请记住,不是所有的\(STL\)容器都有这个性质!在\(STL\)的学习过程中,一定要清楚各个容器之间的异同!