算法拾遗[4]——STL用法
主要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
的方法(优先级最大的最先出队):
1
2
3
4
5
6
7
8struct
{
bool operator() (const int a, const int b) const
{
return a > b;
}
};
priority_queue<int, vector<int>, cmp> pq; // 此时也是最小堆大专栏 算法拾遗[4]——STL用法ody>
例题
- 百练 4078: http://bailian.openjudge.cn/practice/4078/
字符串
定义更容易: string s;
基本操作
s.size()
串长度(下标从0 开始);s.substr(a, n)
构造子串, a为第一个字符的下标, n为子串字符长度;s'find(it1, it2, x)
在指针it1
和it2
中间查找字符x
; (s.find(x)
为整个s
中查找x
)s.erase(a)
删除元素, a貌似是指针, 可以和find
合用去除指定字符, 如s.erase(std::find(s.begin(), s.end(), ' '));
去掉所有空格;s.empty()
判断是否为空;- 支持
push_back
和pop_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用法的更多相关文章
- STL函数 lower_bound 和 upper_bound 在算法竞赛中的用法
以前比较排斥这两个函数,遇到需要二分的情景都是手写 \(while(left<=right)\). 这次决定洗心革面记录一下这两个函数的在算法竞赛中的用法,毕竟一般不会导致TLE. 其实百度百科 ...
- 数据结构(DataStructure)与算法(Algorithm)、STL应用
catalogue . 引论 . 数据结构的概念 . 逻辑结构实例 2.1 堆栈 2.2 队列 2.3 树形结构 二叉树 . 物理结构实例 3.1 链表 单向线性链表 单向循环链表 双向线性链表 双向 ...
- STL用法整理
百度百科 STL是Standard Template Library的简称,中文名标准模板库,惠普实验室开发的一系列软件的统称.从根本上说,STL是一些“容器”的集合,这些“容器”有list,vect ...
- STL用法大全
1. 概述 泛型编程思想最早缘于A.Stepanov提出的部分算法可独立于数据结构的论断.20世纪90年代初A.Stepanov和Meng Lee根据泛型编程的理论用C++共同编写了STL.但直 ...
- [笔记]一些STL用法
参考资料:STL 在 OI 中的应用 离散化 std::unique 功能:对有序的容器重新排列,将第一次出现的元素从前往后排,其他重复出现的元素依次排在后面 返回值:返回迭代器,迭代器指向的是重复元 ...
- MoreWindows 微软认证专家博客目录(白话算法,C++ STL,windows编程)
为了方便大家查找和学习,现将本人博客中所有博客文章列出目录. (http://blog.csdn.net/morewindows) 一. 白话经典算法 目前有17篇,分为七大排序和经典面试题 ...
- STL&&用法集合
.....STL是c++里很强势很好用的一系列容器(函数)之类的,之前一直不太会用,所以总是暴毙....想着快比赛了,是时候理一下这些东西了. -1.pair 存放两个基本元素的东西 定义方法: pa ...
- STL用法之set
[C++::STL]之set的用法 c++ set求差集,并集,交集
- 基础算法学习以及$STL$的使用
1.优先队列 (1)大根堆(小顶堆) priority_queue<int,vector<int>,greater<int> >q; (2)小根堆(大顶堆) pri ...
随机推荐
- centos 7搭建 strongSwan
https://blog.csdn.net/sqzhao/article/details/76093994
- 给c盘瘦身
火狐浏览器缓存 C:\Users\lenovo\AppData\Local\Mozilla\Firefox\Profiles\5nk022sw.default\cache2\entries C:\U ...
- oauth2 Spring Security
oauth2四种授权方式小结 http://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html 密码模式(resource owner pas ...
- Linux图形界面与命令行界面切换
1.没有安装图形界面的Linux系统执行下面命令安装图形界面: yum groupinstall "GNOME Desktop" "Graphical Administr ...
- Chapter2. Vector Analysis (Field and Wave Electromagnetics. Second Edition) David K. Cheng
2-1 Introduction imperative adj.紧急的 deficiency adj. 缺点,缺乏,缺陷 awkward adj .令人尴尬的
- mybatis <where>标签别勿用,否则线上清表
公司线上发送了清表现象,排除发现: <delete id="scMxdxxxb"> DELETE TABLE <where> <foreach col ...
- selenium登录网银,密码控件输入
尝试登录农行网银,发现带控件的密码输入框怎么都无法输入啊 最后用虚拟键盘实现的 , DD模拟键盘 http://www.ddxoft.com/ 图形验证码识别没过,有时间再继续 需要安装 Tess ...
- string判断是否是正常的ip格式
废话不多说,上代码 bool isCurrectIP(char *ip) { if (ip == NULL) { return false; } char temp[4]; int count = 0 ...
- 忘记mysql root用户密码的解决办法(skip-grant-tables)
skip-grant-tables顾名思义,数据库启动的时候 跳跃权限表的限制,不用验证密码,直接登录. 注意: 这种情况只有在忘记root密码 不得已重启数据库的情况下使用的.现网环境慎用,需要重启 ...
- COMET探索系列一【COMET实践笔记】
这几天在给公司的一个点对点聊天系统升级,之前只是使用简单的ajax轮询方式实现,每5秒钟取一次数据,延时太长,用户体验不是很好,因此打算采用服务器推送技术,故此整理了以下文档,将自己找到的一些资料及心 ...