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;
    

      

    加油啦!加油鸭,冲鸭!!!
  • 相关阅读:
    eclipse使用
    模板模式

    异常处理
    内部类
    面向对象三大特征(三)--多态
    java双指针的简单理解
    简单易懂回溯算法
    《深入理解Java虚拟机》之(一、内存区域)
    Java笔记(第七篇 JDBC操作数据库)
  • 原文地址:https://www.cnblogs.com/clarencezzh/p/10727388.html
Copyright © 2011-2022 走看看