1算法基础
Posted clarencezzh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1算法基础相关的知识,希望对你有一定的参考价值。
什么是 STL?
STL(Standard Template Library)是 C++ 标准模板库,里面提供了大量模板。
队列(先进先出)
加载库:include < queue > 申明:queue < type > name
queue中元素在内存中不一定连续。
q.push(x) 向队列 q 末尾加入元素 x o(1)
q.pop() 从对头出队o(1)
q.front() 返回队列 q 开头元素。q.back() 返回队列 q 末尾元素。
q.size() 返回队列 q 元素个数。q.empty() 返回队列 q 是否为空。
应用:SPFA算法,BFS。(需要先来先走的情况,扩展节点)
加载库:include < deque>
双端队列deque是一个支持在两端高效插入或删除元素的连续线性空间。他像vector和queue的结合。与vector相比,deque在头部删除和增加的元素的时间复杂度为O(1);与queue相比,deque像数组一样支持随机访问。
-
-
-
-
-
-
-
- [] 随机访问 与vector类似 O(1)
- begin/end 头尾迭代器 与vector类似 O(1)
- front/back
- push_back
- push_front
- pop_back
- clear
-
-
-
-
-
-
priority_queue (优先队列)
加载库:include < priority_queue > 申明:priority_queue < type > name
一般使用:priority_queue< int,vector<int>,greater<int> > q; //小根堆
( 注意有三个元素要写,vector<int>无意义,但要写;或者只写前面的一个也可以 )
重载小于号:
struct node{ //默认大根堆 int x,y; //先按和排序,再按x排序 bool operator<(const node &v) const { if(x+y!=v.x+v.y) return x+y < v.x+v.y; return x<v.x; } //重载之后变为从小到大排序 }; priority_queue<node> q;
以上是关于1算法基础的主要内容,如果未能解决你的问题,请参考以下文章