主要bb一下优先队列和字符串吧. 哦还有 bitset.

优先队列

  • 定义很容易: priority_queue<int> pq;
  • 内部是一个堆.

基本操作

  • pq.top() 取堆顶元素; (没有 front() 方法!)
  • pq.push(x) 插入;
  • pq.pop() 删除(删除堆顶);
  • pq.empty() 判断是否为空.

自定义优先级

  • 最大堆: priority_queue<int> pq;
  • 最小堆: priority_queue< int, vector<int>, greater<int> > pq;
  • 事实上还有自定义优先级 cmp 的方法(优先级最大的最先出队):

    大专栏  算法拾遗[4]——STL用法ody>

    1
    2
    3
    4
    5
    6
    7
    8
    struct 
    {
    bool operator() (const int a, const int b) const
    {
    return a > b;
    }
    };
    priority_queue<int, vector<int>, cmp> pq; // 此时也是最小堆

例题

  • 百练 4078: http://bailian.openjudge.cn/practice/4078/

字符串

定义更容易: string s;

基本操作

  • s.size() 串长度(下标从0 开始);
  • s.substr(a, n) 构造子串, a为第一个字符的下标, n为子串字符长度;
  • s'find(it1, it2, x) 在指针 it1it2 中间查找字符 x; (s.find(x) 为整个 s 中查找 x)
  • s.erase(a) 删除元素, a貌似是指针, 可以和 find 合用去除指定字符, 如 s.erase(std::find(s.begin(), s.end(), ' ')); 去掉所有空格;
  • s.empty() 判断是否为空;
  • 支持 push_backpop_back;
  • 支持 +, === 运算.

遍历操作

  • 可以用 auto it = s.begin(); it != s.end(); it++ 遍历;
  • 但我一般都用 int i = 0; i < s.size(); i++ 遍历.

和数字的转换

字符串转数字

  • stoi, stol, stoll: 字符串转整数;
  • stof, stod, stold: 字符串转浮点数;

数字转字符串

  • to_string 直接转成 std::string.

位向量

定义: bitset<length> b(value);

基本操作

  • 支持位运算 &, ^, <<, >>等;
  • to_string() 转化为字符串;
  • to_ulong(), to_ullong() 转化为无符号整数;
  • flip(i) 第i位取反, 下标从0开始. flip() 全部按位取反.

算法拾遗[4]——STL用法的更多相关文章

  1. STL函数 lower_bound 和 upper_bound 在算法竞赛中的用法

    以前比较排斥这两个函数,遇到需要二分的情景都是手写 \(while(left<=right)\). 这次决定洗心革面记录一下这两个函数的在算法竞赛中的用法,毕竟一般不会导致TLE. 其实百度百科 ...

  2. 数据结构(DataStructure)与算法(Algorithm)、STL应用

    catalogue . 引论 . 数据结构的概念 . 逻辑结构实例 2.1 堆栈 2.2 队列 2.3 树形结构 二叉树 . 物理结构实例 3.1 链表 单向线性链表 单向循环链表 双向线性链表 双向 ...

  3. STL用法整理

    百度百科 STL是Standard Template Library的简称,中文名标准模板库,惠普实验室开发的一系列软件的统称.从根本上说,STL是一些“容器”的集合,这些“容器”有list,vect ...

  4. STL用法大全

    1.    概述 泛型编程思想最早缘于A.Stepanov提出的部分算法可独立于数据结构的论断.20世纪90年代初A.Stepanov和Meng Lee根据泛型编程的理论用C++共同编写了STL.但直 ...

  5. [笔记]一些STL用法

    参考资料:STL 在 OI 中的应用 离散化 std::unique 功能:对有序的容器重新排列,将第一次出现的元素从前往后排,其他重复出现的元素依次排在后面 返回值:返回迭代器,迭代器指向的是重复元 ...

  6. MoreWindows 微软认证专家博客目录(白话算法,C++ STL,windows编程)

    为了方便大家查找和学习,现将本人博客中所有博客文章列出目录. (http://blog.csdn.net/morewindows) 一.      白话经典算法 目前有17篇,分为七大排序和经典面试题 ...

  7. STL&&用法集合

    .....STL是c++里很强势很好用的一系列容器(函数)之类的,之前一直不太会用,所以总是暴毙....想着快比赛了,是时候理一下这些东西了. -1.pair 存放两个基本元素的东西 定义方法: pa ...

  8. STL用法之set

    [C++::STL]之set的用法 c++ set求差集,并集,交集

  9. 基础算法学习以及$STL$的使用

    1.优先队列 (1)大根堆(小顶堆) priority_queue<int,vector<int>,greater<int> >q; (2)小根堆(大顶堆) pri ...

随机推荐

  1. C#在listview控件中显示数据库数据

    一.了解listview控件的属性 view:设置为details columns:设置列 items:设置行 1.将listview的view设置为details 2.设置列属性 点击添加,添加一列 ...

  2. random mating

    随机交配种群 孟德尔分离(基于diploid and sexual)和随机交配(1.不因突变而改变的规律2.可计算的)是群体遗传学的基础. 随机交配(random mating)指群体中每一个成员与另 ...

  3. itext实现横向pdf打印内容

    Document doc = new Document(PageSize.A4); 这个是用PageSize.A4设置的是纵向A4大小 进入 com.itextpdf.text.PageSize的源码 ...

  4. windows10+apache2.4+python3.6部署Django2.2.4项目

    刚从家回来,老师让写专利,就开始准备写,初稿交给老师后,把我说了一顿,我就想着回去改呀,然后...老师找到了我,说是食品院那急需一个展示数据的平台,然我尽快干出来,我也是菜鸟啊,就没单独干过呀,即使是 ...

  5. Matlab高级教程_第二篇:Matlab2016a和VS2013混合

    1. 首先把VS2017的XML两个配置文件放到 2. 然后一步一步的进行选择: 3. 2016版本的deploytool工具已经改版了,具体详细使用如下 4. 编写一个测试函数 我们编译成C#语言的 ...

  6. MySQL_学习资料

    https://mp.weixin.qq.com/s/qOmyaEEpVJTUMZYfomp3ug

  7. 九、linux-msyql下的mysql主从复制深度实战

    1.上节基本诉说了mysql主从同步,这里想说明的是,其一从库在请求主库进行同步的时候,是主库的主线程进行用户名.密码的验证,在验证通过后,将请求转交给I/O线程负责同步:其二从库sql线程在读取中继 ...

  8. NAIPC 2019 A - Piece of Cake(凸包计算)

    学习:https://blog.csdn.net/qq_21334057/article/details/99550805 题意:从nn个点中选择kk个点构成多边形,问期望面积. 题解:如果能够确定两 ...

  9. linux重定向与管道符(一)

    linux重定向和管道符 为什么要使用重定向 1.当屏幕输出的信息很重要,而且我们需要将他存下来的时候: 2.后台执行中的程序,不希望他干扰屏幕正常的输出结果时: 3.系统的例行命令,例如定时任务的执 ...

  10. EXAM-2018-8-9

    EXAM-2018-8-9 B 水题 注意理解题意 有坑 G 博弈 观察发现 总是会进行到最后两个,或者先手取完全部,再特判一下只有一张牌的情况 H 九连环 通过找规律 我们可以得出递推式: F[n] ...