STL常见容器的用法
代码来源:晴神《算法笔记》!!
一. vector
特点:变长数组
使用vector,需要添加vector头文件,并写上using namespace std; 其他容器类似,都需要添加相应的头文件,不再赘述。
定义
vector<typename> name;
typename可以是任何基本类型,也可以是STL标准容器。注意,如果容器套容器,两个>之间应当加上空格,如下:
vector<vector<int> > name;
vector数组的定义方法:
vector<typename> arrayname[size];
与上一种写法不同的是,这种写法的一维长度已经固定。
访问元素
- 通过下标
v[index] - 通过迭代器
迭代器类似于指针,定义方式如下:
vector<typename>::iterator it;
通过*it即可访问vector中的元素。
v[i]和 *(v.begin() + i)是等价的,需要注意的是,在常见STL容器中,只有vector和string支持v.begin()+3这种迭代器加上整数的写法。
另外,迭代器支持自加自减操作。
常见函数
- push_back()和pop_back()
- size()
- clear()
- insert()
v.insert(it, x); //it是迭代器
- erase()
//删除单个元素
v.erase(it); //it是迭代器
v.erase(v.begin() + 3)
//删除一个区间内元素
v.erase(v.begin() + 1, v.begin() + 3); //左闭右开区间
-
begin()和end()
不支持it < v.end()这种写法,应当写成it != v.end()
注意,v.end()指向尾元素地址的下一个地址。
-
vector本身没有find()
需要依靠algori