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;

  

加油啦!加油鸭,冲鸭!!!
原文地址:https://www.cnblogs.com/clarencezzh/p/10727388.html