zoukankan      html  css  js  c++  java
  • 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;
    

      

    加油啦!加油鸭,冲鸭!!!
  • 相关阅读:
    创业日记-时间过的也快也慢
    通过获取客户端Json数据字符串,反序列化为实体对象的一段代码
    Sandcastle是什么
    使用VisualSVN Server自动发布站点
    Microsoft Visual Studio Ultimate 2015 Preview使用笔记
    俞敏洪:自卑比狂妄更糟糕
    灰度发布
    TLV格式是什么格式
    zend studion实现自动换行
    数字格式化,从右往左每隔三位加逗号的四种方法
  • 原文地址:https://www.cnblogs.com/clarencezzh/p/10727388.html
Copyright © 2011-2022 走看看