• STL集合


    善用轮子,拒绝做工具人

    我再写手写堆我就是狗

    O 万能头

    #include<bits/stdc++.h>

    O 优先队列

    库:queue vector(记得using namespace std;)

    声明:

    priority_queue<int> h;

    不加参数时堆顶是最大的元素

    但是重载运算符只能重载小于号,很奇怪

    重载运算符可以这么写

    friend bool operator<(nds x,nds y){

      return x.z>y.z;

    }

    这样写出来堆顶的元素是z最小的

    priority_queue<int,vector<int>,greater<int> >h;

    这个跟默认没啥区别

    priority_queue<int,vector<int>,less<int> > h;

    这个和默认反过来

    priority_queue<int,vector<int>,cmp> h;

    cmp是比较器,可以这么写

    struct cmp{

      bool operator()(int x,int y){

        return x>y;

      }

    };

    注意operator后边有一对括号(),据说默认比较器就是这玩意

    它相当于小于号,需要注意比较器是小于号,而堆顶是最大的元素

    操作:

    empty() 如果队列为空返回true

    push() pop() size() 不说了

    top() 返回堆顶元素

    O map

    库:map

    声明:

    map<int,int> f;

    第一个是索引(即下标),第二个是里边装的东西的类型

    map<int,map<int,int> > f;

    这个可以当二维数组

    操作:

    直接当数组用就vans了

    map.insert(1, 2) 插入key为1value位2的元素,如果存在key为1的元素则插入失败

    map.count(1) 检查是否存在key为1的元素

    map.erase(1) 删除key为1的元素

    map.begin() map.end() 返回迭代器

    从小到大遍历map:

    for(map<int,int>::iterator i=a.begin();i!=a.end();i++)

    反过来:

    for(map<int,int>::reverse_iterator i=a.end();i!=a.begin();i++)

    取一个迭代器i的key和value:

    i->first i->second

    O next_permutation

    库:algorithm

    操作:next_permutation(a+1,a+n+1);

  • 相关阅读:
    终端-进入云服务器
    Git-简单的利用SourceTree提交代码
    iOS-多线程的底层实现
    JS-表单提交检查表单字数方法
    JS-实时修改在textarea里面的span(实际输入的文字)
    JS-textarea限制输入字数
    JS-Zepto.js中文链接
    搭建简单的单个Mybatis框架
    创建一个简单的SSM框架(2)
    创建一个简单的SSM框架(1)
  • 原文地址:https://www.cnblogs.com/cdcq/p/12402956.html
Copyright © 2020-2023  润新知