《STL详解》读书笔记
v.insert(v.begin(), num);//增加
v.erase(v.begin(), v.end()); //擦除
v.erase(v.begin());
reverse(v.begin(), v.end()); //反向排序(从大到小)
sort(v.begin(), v.end(), comp);
-----------------------------------------------------------
string
string::iterator it = s.begin();
s.insert(it, c);
s.replace(pos, pos, c);
s.find(c);
reverse(s.begin(), s.end());
sscanf("bad", "%s", str);
-----------------------------------------------------------
set 集合容器
红黑树:左根右(不允许重复的键值)
set<int> s;
s.insert(num);
set<int>::iterator it;
中序遍历
for(it = s.begin();it != s.end();++it)
cout << *it << " ";
反向遍历
set<int>::reverse_iterator rit;
for(rit = s.rbegin();rit != s.rend();++rit)
cout << *rit << " ";
找到就返回该键值的迭代器位置,否则返回end()
it = s.find(num);
自定义比较函数,要求按键值由大到小的顺序
1、元素不是结构体
struct myComp
{
bool operator()(const int &a, const int &b)
{
return a > b;
}
};
set<int, myComp>::iterator it;
for(it = s.begin();it != s.end();++it)
cout << *it << " ";
2、元素是结构体,把比较函数写在结构体内
struct Info
{
string name;
float score;
//重载' < '操作符,自定义排序规则
bool operator < (const Info &a) const
{
return a.score < score;
}
};
set<Info>::iterator it;
for(it = s.begin();it != s.end();++it)
cout << (*it).name << ":" << (*it).score << endl;
---------------------------------------------------------------
multiset 多重集合容器
删除值为c的所有重复元素,返回删除元素总数
ms.erase(c);
返回第一个元素重复元素的迭代器位置,没有就返回end()迭代器位置
ms.find(c);
---------------------------------------------------------------
map 映照容器
红黑树,键值不重复,比较函数只比较键值
键值重复输入会被覆盖
使用与set集合容器类似
map<int, char>::iterator it;
map<int, char> m;
cout << m.first << m.second << endl;
{
bool operator ()(const int &a, const int &b)
{
if(a != b)
return a > b;
else
return a > b;
}
};
map<int, char, myComp> m;
m[1] = 'a';
{
string name;
float score;
bool operator < (const Info & a) const
{
return a.score < score;
}
};
map<Info, int>::iterator it;
应用:
用 map 实现数字分离
for(int j = 0;j < 10;++j)
m['0' + j] = j;
数字映照字符
for(int j = 0;j < 10;++j)
m[j] = '0' + j;
--------------------------------------------------------------
multimap 多重映照容器
插入元素需要使用 insert()
pair()将两个数据组合成一个数据, map 中将 key 和 value 放在一起来保存
m.insert(pair<string, double>("Jack", 306));
删除键值为 "Jack" 的元素
m.erase("Jack");
查找元素
m.find("Jack");
------------------------------------------------------------------
deque 双端队列容器
deque 采用分块的线性存储结构存储数据,所有 deque 块用一个 map 块进行管理
以数组方式输出元素
d.pop_front();
d.pop_back();
------------------------------------------------------------------
list 双向链表容器
迭代器只能用“++”或“--”的操作移动
插入新元素时,链表自动扩张
l.push_back();
l.push_front();
删除所有等于 1 的元素
l.remove(1);
l.pop_front();
l.pop_back();
l.erase();
l.find(l.begin(), l.end(), 5);
排序
l.sort();
剔除连续重复元素
l.unique();
-----------------------------------------------------------------
bitset 位集合容器
bitset 对象的大小一旦定义,就不能修改了
bitset<10> b;
将所有元素设为1
b.set();
b.set(pos, 1);
将 pos 位设置为 0
b.reset(pos);
直接向输出流输出所有元素
-----------------------------------------------------------------
stack 堆栈容器
s.push();
s.top();
s.pop();
s.size();
s.empty();
-----------------------------------------------------------------
queue 队列容器
queue<int> q;
q.push();
q.size();
q.front();
q.back();
q.empty();
q.front();//队首
q.back();//队尾
-----------------------------------------------------------------
priority_queue 优先队列容器
队列中最大元素总是位于队首
可以重载 "<" 操作符重新定义比较规则
priority_queue<int> pq;
pq.push(1);
pq.size();
pq.empty();
pq.top();
pq.pop();
struct Info
{
string name;
float score;
bool operator < (const Info &a) const
{
return a.score < score;
}
};
struct myComp
{
bool operator ()(const int &a, const int &b)
{
return a > b;
}
};
priority_queue<int, vector<int>, myComp> pq;
《STL详解》读书笔记的更多相关文章
- csapp读书笔记-并发编程
这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...
- CSAPP 读书笔记 - 2.31练习题
根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1) 属于第一种情况 sum = x ...
- CSAPP读书笔记--第八章 异常控制流
第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...
- CSAPP 并发编程读书笔记
CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《C#本质论》读书笔记(18)多线程处理
.NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- Web高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
随机推荐
- 专题2-通过按键玩中断\第1课-中断处理流程深度剖析-lesson1
中断概念 1.中断生命周期 串口先产生一个事件,该事件传送到中断控制器里面,中断控制器会进行相应过滤,能通过过滤,那么就交给CPU去处理. 2.中断源 2440芯片手册 6410芯片手册 3.中断过滤 ...
- 一步到位带你入门Selenium
其实,关于这篇文章发布前还是有很多思考的,我是不想发布的,因为关于selenium的文章博客园里面有很多的介绍,写的详细的,也有写的不详细的,那么我的这篇文章的定位是基于selnium从开始到最后的框 ...
- oracle数据库单表查询
今天给大家分享的是关于数据库的单表查询,像单表查询/多表查询/分组查询/子查询,这些方法的使用在实际项目过程中会经常用到,作为一名合格的测试人员如果不会数据库那肯定是不行的,行走江湖可能随时会面临被侮 ...
- HTML__图片轮播ion-slide-box
先大概描述一下要做的界面: 从网络请求json数据,获取网络图征数据,然后轮播图片.我遇到的问题是:图片不显示,代码如下 <ion-slide-box does-continue="t ...
- c# 半角转换为全角 判断是否是全角
#region 半角转换为全角 /// <summary> /// 半角转换为全角 ////转全角的函数(SBC case) ///任意字符串 ///全角空格为12288,半角空格为32 ...
- 明码——第九届蓝桥杯C语言B组(省赛)第二题
原创 标题:明码 汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛.16点阵的字库把每个汉字看成是16x16个像素信息.并把这些信息记录在字节中. 一个字节可以存储8位信息,用32个字 ...
- 【单例模式】Singleton pattern
前言:有很多时候,在一个生命周期中我们只要一个对象就可以了,比如:线程池,缓存,对话框,日志,显卡驱动等等.如果造出多个实例,就会导致许多问题产生,例如:程序的行为异常.资源使用过量,或者说不一致的结 ...
- Arduino I2C + DS1307实时时钟
主要特性 DS1307是Maxim的串行.I2C实时时钟芯片.主要特性有: 工作电压:主电源电压4.5~5.5V,电池电压2.0~3.5V 功耗:电池供电.备份模式时<500nA 接口:I2C, ...
- super() 的入门使用
在类的继承中,如果重定义某个方法,该方法会覆盖父类的同名方法,但有时,我们希望能同时实现父类的功能,这时,我们就需要调用父类的方法了,可通过使用 super 来实现,比如: 1 2 3 4 5 ...
- GeoServer中GeoWebCache(GWC)的使用
本文介绍GeoWebCache的使用方法,包括如何切缓存,访问缓存wms/wmts服务,如何复用栅格缓存等. 文章大部分内容转载自https://www.cnblogs.com/naaoveGIS/p ...