目录

  • 1. STL组件
  • 2. 容器
    • 2.1 容器分类
    • 2.2 三种容器实现原理
    • 2.3 关联式和无序容器的小知识点
    • 2.4 容器适配器
  • 3. 迭代器
    • 3.1 迭代器概念与基本操作
    • 3.2 迭代器的半开区间性质
    • 3.3 迭代器的小知识点
    • 3.4 迭代器种类
  • 4. 算法
    • 4.1 算法的处理区间

1. STL组件

由容器、迭代器、算法三部分组成。

2. 容器

2.1 容器分类

分为三类,且每一种包含的类型皆在下图中显示:

2.2 三种容器实现原理

2.3 关联式和无序容器的小知识点

  1. 可以认为是“索引是任意类型”的数组。
  2. 关联式和无序容器会自动排序元素,因此,它们键值(key)必须是常量。

2.4 容器适配器

3. 迭代器

3.1 迭代器概念与基本操作

3.2 迭代器的半开区间性质

3.3 迭代器的小知识点

  1. ++it vs. it++ 自增的效率对此:
  2. Range-Based for 循环 vs. 迭代器 实现关系

3.4 迭代器种类


关于随机访问迭代器,功能高级,但有些容器不支持,所以使用时得注意,特别进行泛型编程时要考虑好这一点的差异。比如:

// 示例1
coll.begin() - coll.end()
// 示例2
coll.begin() + 1
coll.begin() + 3
// 示例3
for (auto it = coll.begin(); pos < coll.end(); ++it) {...
}
// 示例4
++coll.begin()
// 示例5
for (auto it = coll.begin(); pos != coll.end(); ++it) {...
}

示例1、示例2和示例3是第三种迭代器特有的:
示例1,返回的是两个迭代器之间的距离。
示例2,可以直接使用算术运算。
示例3,操作 ’ < ’ 比较迭代器。
为了通用,应当尽可能使用示例4和示例5。

4. 算法


用法示例:

#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;int main()
{// create vector with elements from 1 to 6 in arbitrary ordervector<int> coll = { 2, 5, 4, 1, 6, 3 };// find and print minimum and maximum elementsauto minpos = min_element(coll.cbegin(),coll.cend());cout << "min: "  << *minpos << endl;auto maxpos = max_element(coll.cbegin(),coll.cend());cout << "max: "  << *maxpos << endl;// sort all elementssort (coll.begin(), coll.end());// find the first element with value 3// - no cbegin()/cend() because later we modify the elements pos3 refers toauto pos3 = find (coll.begin(), coll.end(),  // range3);                        // value// reverse the order of the found element with value 3 and all following elementsreverse (pos3, coll.end());// print all elementsfor (auto elem : coll) {cout << elem << ' ';}cout << endl;
}

4.1 算法的处理区间


比如下面的例子:

#include <algorithm>
#include <list>
#include <iostream>
using namespace std;int main()
{list<int> coll;// insert elements from 20 to 40for (int i=20; i<=40; ++i) {coll.push_back(i);}// find position of element with value 3// - there is none, so pos3 gets coll.end()auto pos3 = find (coll.begin(), coll.end(),    // range3);                          // value// reverse the order of elements between found element and the end// - because pos3 is coll.end() it reverses an empty rangereverse (pos3, coll.end());// find positions of values 25 and 35list<int>::iterator pos25, pos35;pos25 = find (coll.begin(), coll.end(),  // range25);                       // valuepos35 = find (coll.begin(), coll.end(),  // range35);                       // value// print the maximum of the corresponding range// - note: including pos25 but excluding pos35cout << "max: " << *max_element (pos25, pos35) << endl;// process the elements including the last positioncout << "max: " << *max_element (pos25, ++pos35) << endl;
}

C++标准库学习笔记——标准模板库笔记相关推荐

  1. python3 模板库_3 个 Python 模板库比较-阿里云开发者社区

    在我的日常工作中,我花费大量的时间将各种来源的数据转化为可读的信息.虽然很多时候这只是电子表格或某种类型的图表或其他数据可视化的形式,但也有其他时候,将数据以书面形式呈现是有意义的. 但我的头疼地方就 ...

  2. 【Python 标准库学习】容器数据类型库 — collections

    欢迎加入 Python 官方文档翻译团队:https://www.transifex.com/python-doc/ collections 模块实现了特定目标的容器,以提供Python标准内建容器 ...

  3. 【Python 标准库学习】伪随机数生成库 — random

    欢迎加入 Python 官方文档翻译团队:https://www.transifex.com/python-doc/ 随机函数在很多科学计算中都会用到,比如生成一系列随机数来计算平均值.高斯分布.伽马 ...

  4. C++练习笔记STL模板库之常用算法1

    STL算法组成 STL算法主要是由头文件 组成 是所有STL头文件中最大的一个,范围涉及到比较.交换.查找.遍历.复制.修改等 体积很小,只包括几个在序列上面进行简单数学运算的模板函数 定义了一些模板 ...

  5. 前端框架OnsenUI学习之OnsenUI模板库介绍

    OnsenUI模板介绍: ​OnsenUI的模板没有存在于模板存储库中,在使用时需要下载.这样开发者在使用过程中遇到bug,无法直接提交Pull Request来警示其他开发者.如果模板升级的话,开发 ...

  6. POCO C++库学习和分析 -- 序

    POCO C++库学习和分析 -- 序 1. POCO库概述: POCO是一个C++的开源库集.同一般的C++库相比,POCO的特点是提供了整一个应用框架.如果要做C++程序应用框架的快速开发,我觉得 ...

  7. 【有奖征集】报表模板库邀您提反馈,轻松赢取P30!

    >>立即参赛 赛事初衷 大数据时代,数据的价值愈发彰显,什么样的报表才能真正帮助业务决策?这几乎是所有信息化建设的企业和个人都在思考的问题. 作为报表领域标杆企业,葡萄城于2017年推出了 ...

  8. 南京都昌科技电子病历模板库清单

    2015年1月30号南京都昌科技电子病历模板库有1074个模板文件,目前正在不断增加中,以后大家都不用操心做模板了,直接照抄就行了.清单如下,有意购买者请致电13382028281南京都昌科技市场部刘 ...

  9. POCO C++库学习和分析

    POCO C++库学习和分析 -- 序 1. POCO库概述: POCO是一个C++的开源库集.同一般的C++库相比,POCO的特点是提供了整一个应用框架.如果要做C++程序应用框架的快速开发,我觉得 ...

  10. Arduino开发-TFT_eSPI库学习

    TFT_eSPI库学习 文章目录 TFT_eSPI库学习 TFT_eSPI库安装以及配置 TFT_eSPI库文件目录 配置文件 1.User_Setup_.h 2. User_Setup_Select ...

最新文章

  1. 深度分析:比特大陆二代AI芯片性能跃升,专注安防视频
  2. html测试大题代码,Html5+js测试题(示例代码)
  3. 小余学调度:调度禁忌操作讲解(持续更新中ing)
  4. 虚拟机7.1.4序列号
  5. 【OS学习笔记】三十二 保护模式九:分页机制对应的汇编代码之---内核代码
  6. 你应该升级到SQL Server 2005还是SQL Server 2008?
  7. MySQL安装叫重启,如何重启MySQL,正确启动MySQL
  8. php放量文档,成交量放量过顶买入法(图解)
  9. 11-4实战上色及修复照片
  10. css滚动到顶部自动固定
  11. 使用Trace实现程序日志
  12. hud android,Android 加载等待控件 ZFProgressHUD
  13. 基于SSM的多人协作家庭记账系统
  14. 线与逻辑与OC门、OD门关系
  15. 医疗信息管理系统(HIS)——>业务介绍
  16. 无缝衔接的人会遭报应吗_怎么看待分手后无缝衔接的人?
  17. 工作站与服务器的区别
  18. 穆利堂[推荐] WxPM信息化整体解决方案-河南郑州房地产工程项目管理系统软件 穆穆-movno1
  19. c++四种cast的原理和用途
  20. python继承怎么写_python 继承

热门文章

  1. 开学季的文案集锦用什么便签软件写?
  2. 《Python+Kivy(App开发)从入门到实践》自学笔记:打包——Windwos打包
  3. 将电脑内存插入其他未知导致开机报警
  4. 怎么用php做一个新闻网站,0067 如何编程开发一个新闻发布功能网站
  5. vue3中使用全局变量(vue2x中this)
  6. Cassandra数据库介绍
  7. 挣值管理-成本管理-高项计算题核心
  8. 计算机组装所需要的部件,组装一台电脑需要哪些配件【详细列举】
  9. STKO助力OpenSEES系列:平面多层多跨混凝土框架静力循环pushover分析
  10. 如何停止单个db2数据库