文章目录

  • STL六大部件
  • STL六大部件代码示例
  • 时间复杂度
  • 前闭后开区间
  • auto关键字的用法

STL六大部件

容器
分配器
算法
迭代器
适配器
仿函数

容器要放东西,东西要占用内存,分配器可支持容器解决内存问题。算法处理容器中的数据。迭代器容器算法之间的桥梁。迭代器是泛化的指针。仿函数作用就像是一个函数。适配器可以对一些部件进行转换,例如,迭代器适配器,容器适配器,仿函数适配器。

STL六大部件代码示例

#include<vector>
#include<algorithm>
#include<functional>
#include<iostream>using namespace std;int main(){int ia[6]={27,210,12,47,109,83};
//vector 是一个容器,第一个参数是容器中存放的数据类型,第二个参数是一个分配器
//第二个参数可不写,此时会选择默认的分配器
//分配器也是一个模板,需要指定其分配的类型,例如本例中的int
//容器中数据的类型应与分配器中的类型一致
vector<int,allocator<int>>vi(ia,ia+6);//<count_if()是算法
//vi.begin(),vi.end()是迭代器
//not1()是一个仿函数适配器,表示否定,即该count_if函数表示的是容器中大于等于40的个数
//bind2nd()是一个仿函数适配器,绑定第二参数
//less<int>()是仿函数
cout<<count_if(vi.begin(),vi.end(),not1(bind2nd(less<int>(),40)));system("pause");
return 0;
}

输出结果:

4

时间复杂度

  1. O(1)或O(c):常数时间
  2. O(n):线性时间
  3. O(log2nlog_2nlog2​n):次线性时间
  4. O(n2n^2n2):常数时间
  5. O(n3n^3n3):常数时间
  6. O(2n2^n2n):常数时间
  7. O(nlog2nnlog_2nnlog2​n):常数时间

前闭后开区间

标准库规定,容器头尾是前闭后开区间,容器不一定是连续空间
下图中对容器进行遍历的程序中,Container替换成任意容器即可,

每一个容器的迭代器都有其自己的类型,其写法如下:

Container<T>::iterator ite = c.begin();

遍历容器的示例一:

for(;ite!=c.end();++ite)...

遍历容器的示例二:

//c是容器
for(auto elem:c)...
//如果我们对容器中的数据进行修改,写法可如下:
for(auto& elem:c)elem*=3;

auto关键字的用法

C++STL与泛型编程(2) 第一个C++ STL Application相关推荐

  1. C++STL与泛型编程__侯捷视频_学习博客_总目录

    C++STL与泛型编程 侯捷 (1): c++重要网站相关 C++STL与泛型编程(2) 第一个C++ STL Application: STL六大部件代码示例,容器前闭后开区间,auto关键字的用法 ...

  2. C++ STL和泛型编程(四)----movable

    C++ STL和泛型编程(四)----movable 一.moveable对各容器的影响 二.moveable class 三.测试函数 一.moveable对各容器的影响 其对vector的影响表现 ...

  3. C++标准库(STL)与泛型编程

    C++标准库(STL)与泛型编程 学习网站: cplusplus.com cppRerference.com 学习书籍: <STL源码剖析> STL体系结构基础介绍 STL六大部件:容器. ...

  4. 记一道面试题:STL两个栈实现一个队列。

    面试题目 STL两个栈实现一个队列. 要求:只能使用栈的pop(),top()和push(),以及测试栈是否为空 empty()四个操作. 来实现队列的clear(), push(),pop(),ba ...

  5. C++《STL和泛型编程》算法accumulate、for_each、sort简单使用例子

    <STL和泛型编程>算法accumulate.for_each.sort简单使用例子 一.算法accumulate 二.算法for_each 三.算法sort 一.算法accumulate ...

  6. STL和泛型编程_学习笔记01

    STL和泛型编程 本学习笔记是基于侯捷老师的STl和泛型编程课程 1. STL六大部件基础介绍 (Components) ​ 容器(Containers) ​ 分配器(Allocator) ​ 算法( ...

  7. 读 S. Meyers 之 《Effective STL 中文版:50条有效使用 STL 的经验》

    S. Meyers, 潘爱民, 陈铭, 邹开红. Effective STL 中文版:50条有效使用 STL 的经验. ISBN: 978-7-121-20125-7 STL (Standard Te ...

  8. android stl 3d模型,3D文件转化为STL文件 - 魔猴网

    魔猴网免费在线3D文件转化工具常见问题 Q:什么是3D文件转化工具 A:3D文件转化工具是魔猴网针对3D打印文件推出的免费在线工具,可以将20多种常见的3D文件格式转化为可3D打印的文件格式,即stl ...

  9. STL源码剖析(一)STL简介

    STL源码剖析(一)STL简介 文章目录 STL源码剖析(一)STL简介 一.STL概述 二.STL六大组件 2.1 容器(containers) 2.2 算法(algorithms) 2.3 迭代器 ...

  10. Effective STL中文版:50条有效使用STL的经验(双色)

    <Effective STL中文版:50条有效使用STL的经验(双色)> 基本信息 作者: (美)梅耶(Meyers,S.) 译者: 潘爱民 陈铭 邹开红 出版社:电子工业出版社 ISBN ...

最新文章

  1. 不能查看隐藏文件夹的对策
  2. 三代测序原理与数据文件简介(SMRT+Nanopore)
  3. 记录一下提取文件夹中所有文件名字
  4. HDLBits答案(21)_Verilog有限状态机(8)
  5. [转帖]经典好文!看完后感到很震撼!
  6. 吃糖果(HDU-1205)
  7. Spring Cloud 服务安全连接 1
  8. Bailian3704 扩号匹配问题【堆栈】
  9. Linux查看和修改IP地址
  10. Java实现MySql分页查询
  11. Reset、clock、locked和dcm_locked之间的坑
  12. android 高德静态地图api,静态地图-API文档-开发指南-Web服务 API | 高德地图API
  13. 苹果计算机安装应用软件,苹果Mac电脑怎么安装软件和卸载软件?
  14. 日行一小步,坚持一大步
  15. 关于机械系2011年硕士生复试有关事…
  16. 2022-2028全球与中国定时器市场现状及未来发展趋势
  17. IOS之 上传App预览和截屏规范
  18. 全基因组关联分析(GWAS)
  19. Java操作excel文件插入数据
  20. Flask学习笔记之g对象

热门文章

  1. 【转】注册Azure AD 应用程序
  2. C#进阶系列——AOP?AOP!
  3. 排序集锦(各种排序算法的特点及性能分析)
  4. 选址问题java_学习使用分治算法来解决邮局选址问题(Java实现)
  5. linux mysql移植_linux 下mysql 移植设置方法
  6. python输入直角三角形a、b、输出斜边c_编写一个程序,输入直角三角形两条直角边a和b的长度,利用勾股定理计算斜边c的长度。要求结果保留2位...
  7. 大疆无人机高程不准_大疆消费级无人机快速倾斜摄影测量实践
  8. stl源码剖析_STL源码剖析 阅读笔记(二)allocator
  9. 【Python 必会技巧】使用 join() 方法将序列中的元素拼接成字符串
  10. Python3 爬虫学习笔记 C16【数据储存系列 — Redis】