【总结】stl(以后还会慢慢补上

总结stl的用法(啊现在还很少以后会慢慢补上的w

vector

vector是一个动态数组,在定义后他会预先开一个比较小的空间,对于push_back()操作如果数组大小不够了,会继续开一些空间。

访问位置时间复杂度O(1),加入元素时间复杂度近似O(1)

缺点:常数会比较大

常用操作

定义方式:vector a;

在末尾压入容器:a.push_back(x);

在末尾弹出容器:a.pop_back();

清空容器:a.clear();

查询元素个数:a.size();

首指针:a.begin();

插入元素在sit位置:a.insert(sit,x);其中sit是vector的迭代器。

调用的时候直接通过数组下标就能访问

queue

是一种先进先出的线性表,可以直接用stl中的queue

常用操作:

¢定义:queue a;

¢插入队尾:a.push(x);

¢删除队首:a.pop();

¢查询队尾:a.back();

¢查询队首:a.front();

¢查询长度:a.size();

¢清空只能慢慢pop。

我们可以选用一个队首指针和队尾指针来手动模拟一个队列。

stack

同queue类似,但是先进后出的线性表

常用操作

定义:stack a;

查询栈顶:a.top();

压入栈顶:a.push(x);

将元素从栈顶弹出:a.pop();

查询a中的元素个数:a.size();

清空只能慢慢pop。

思考:
如何用两个栈A,B模拟一个队列,并且时间复杂度尽可能好

先压入A,再将A中元素依次弹出,压入B

map

映射,把它看做一个无限大的数组。

定义方式:map<int ,int> a;

使用方式:a[x]++,cout<<a[y]等。

利用迭代器查询map里的所有二元组:

for (map<int,int>::iterator sit=a.begin(); sit!=a.end(); sit++) cout<first<<‘ ‘<second<<endl;

清空:a.clear();

posted @ 2020-01-30 11:34  蕙心心w  阅读(137)  评论(0编辑  收藏  举报