vector 向量容器
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());
char str[10]'
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;
struct myComp
{
    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';
struct Info
{
    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详解》读书笔记的更多相关文章

  1. csapp读书笔记-并发编程

    这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...

  2. CSAPP 读书笔记 - 2.31练习题

    根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1)  属于第一种情况 sum = x ...

  3. CSAPP读书笔记--第八章 异常控制流

    第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...

  4. CSAPP 并发编程读书笔记

    CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...

  5. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  6. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  7. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  8. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

  9. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  10. Web高级征程:《大型网站技术架构》读书笔记系列

    一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...

随机推荐

  1. bootstrap导航菜单

    <!DOCTYPE html><html lang="zh-cn"><head><meta charset="utf-8&quo ...

  2. css总结15:CSS3 圆角

    1 css圆角: 1.1 浏览器支持:-webkit- 或 -moz- 前面的数字表示支持该前缀的第一个版本. 1.2 属性 border-radius: 代码如下: #rcorners1 { bor ...

  3. MySQL性能调优与架构设计——第7章 MySQL数据库锁定机制

    第7章 MySQL数据库锁定机制 前言: 为了保证数据的一致完整性,任何一个数据库都存在锁定机制.锁定机制的优劣直接应想到一个数据库系统的并发处理能力和性能,所以锁定机制的实现也就成为了各种数据库的核 ...

  4. 解决chrome浏览器无法得到window.showModalDialog返回值的问题

    父页面处理: function ProductList() {   var TypeID = window.document.getElementById("Type").valu ...

  5. python DDT读取excel测试数据

    转自:http://www.cnblogs.com/nuonuozhou/p/8645129.html ddt   结合单元测试一起用 ddt(data.driven.test):数据驱动测试 由外部 ...

  6. 通过vb.net 和NPOI实现对excel的读操作

    通过vb.net 和NPOI实现对excel的读操作,很久很久前用过vb,这次朋友的代码是vb.net写的需要一个excel的操作, 就顾着着实现功能了,大家凑合着看吧 Option Explicit ...

  7. Js杂谈-插件包读后感

    最近有幸得到了一份项目上的前端封装的插件库代码,花了一个下午时间,仔细地研读了一下.对于我很想做自己的类库,搞自己的组件包很有启蒙意义. 相比较我之前阅过的框架或是类库,这份比较简单. 项目是jQue ...

  8. Abp使用不同仓储连接多个数据库

    有群友说官方例子中有,无奈英文和网速太差...自己琢磨吧. 最近开发的项目中,需要从外部系统中读取一些信息,计算之后存入本地的数据库中,外部系统直接提供数据库给我..所以本地需要用到多数据库连接. 项 ...

  9. C#Task学习

    简介: Task 对象是一种的中心思想基于任务的异步模式首次引入.NET Framework 4 中. 因为由执行工作Task对象通常以异步方式执行线程池线程上而不是以同步方式在主应用程序线程中,可以 ...

  10. slowhttptest安装及使用

    slowhttptest简介: Slowhttptest是依赖HTTP协议的慢速攻击DoS攻击工具,设计的基本原理是服务器在请求完全接收后才会进行处理,如果客户端的发送速度缓慢或者发送不完整,服务端为 ...