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

  • 相关阅读:
    文件系统操作与磁盘管理
    文件打包与压缩
    环境变量与文件查找
    Linux 目录结构及文件基本操作
    用户及文件权限管理
    基本概念及操作
    iOS 一个简单的单例
    Xcode编译Undefined symbols for architecture xxx 错误总结
    iOS 直播
    iOS8.1 编译ffmpeg和集成第三方实现直播(监控类)
  • 原文地址:https://www.cnblogs.com/cdcq/p/12402956.html
Copyright © 2011-2022 走看看