STL容器分为顺序容器和关联容器
其中顺序容器最常用的由vector,list,queue
1.vector
vector: 向量容器,可以看作变长数组,长度可根据需要自行变化。
使用的头文件 #include<vector>
定义方式: vector<typename> 数组名;//vector<int> ar;
访问容器内数据的方式和普通数组相同,可以用ar[i]的形式,也可以用迭代器访问
迭代器定义:vector<int>::iterator it;
常用的接口函数:
1.1 push_back();
push_back(x);//将x插入到最后一个元素后面,时间复杂度O(1);
1.2 insert();
ar.insert(it,x);//向迭代器it位置前插入元素x,时间复杂度O(1)~O(n);
ar.insert(it,num,x);//向迭代器it位置前插入num个元素x,时间复杂度O(n)~O(n^2)
ar.insert(it,begin,end);//向it位置前插入从begin位置到end位置的值O(n)~O(N^2)
1.3 size();
用来获取vector中元素个数,时间复杂度O(1)
1.4 clear();
清空vector中元素,时间复杂度O(n);
1.5 pop_back();
删除vector中最后1个元素
1.6 erase();
删除vector中某个元素或某个范围内的元素
erase(position);//删除一个元素(position)
erase(first,last);//删除first到last范围内的元素
其中position,first,last都是vector迭代器
2.list
底层实现为双向链表,与向量相比,插入和删除更高效,但不能按下标随机访问
使用的头文件#include<list>
push_back();//尾部插入一个元素
push_front();//头部插入一个元素
size();//返回list中元素个数
sort();//给list中元素排序
pop_back();//尾部删除
pop_front();//头部删除
erase();//删除一个元素
insert();//插入一个元素到list中
clear();//删除所有元素
3.queue
queue:队列。使用的头文件#include<queue>
push();//入队
pop();//出队
size();//返回队列中元素的个数
empty();//判断队列是否为空,若为空,返回true,否则返回false
front();//返回队头元素(第一个入队的元素)
back();//返回队尾元素(最后一个入对的元素)