C++STL与泛型编程(2) 第一个C++ STL Application
文章目录
- 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
时间复杂度
- O(1)或O(c):常数时间
- O(n):线性时间
- O(log2nlog_2nlog2n):次线性时间
- O(n2n^2n2):常数时间
- O(n3n^3n3):常数时间
- O(2n2^n2n):常数时间
- O(nlog2nnlog_2nnlog2n):常数时间
前闭后开区间
标准库规定,容器头尾是前闭后开区间,容器不一定是连续空间
下图中对容器进行遍历的程序中,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相关推荐
- C++STL与泛型编程__侯捷视频_学习博客_总目录
C++STL与泛型编程 侯捷 (1): c++重要网站相关 C++STL与泛型编程(2) 第一个C++ STL Application: STL六大部件代码示例,容器前闭后开区间,auto关键字的用法 ...
- C++ STL和泛型编程(四)----movable
C++ STL和泛型编程(四)----movable 一.moveable对各容器的影响 二.moveable class 三.测试函数 一.moveable对各容器的影响 其对vector的影响表现 ...
- C++标准库(STL)与泛型编程
C++标准库(STL)与泛型编程 学习网站: cplusplus.com cppRerference.com 学习书籍: <STL源码剖析> STL体系结构基础介绍 STL六大部件:容器. ...
- 记一道面试题:STL两个栈实现一个队列。
面试题目 STL两个栈实现一个队列. 要求:只能使用栈的pop(),top()和push(),以及测试栈是否为空 empty()四个操作. 来实现队列的clear(), push(),pop(),ba ...
- C++《STL和泛型编程》算法accumulate、for_each、sort简单使用例子
<STL和泛型编程>算法accumulate.for_each.sort简单使用例子 一.算法accumulate 二.算法for_each 三.算法sort 一.算法accumulate ...
- STL和泛型编程_学习笔记01
STL和泛型编程 本学习笔记是基于侯捷老师的STl和泛型编程课程 1. STL六大部件基础介绍 (Components) 容器(Containers) 分配器(Allocator) 算法( ...
- 读 S. Meyers 之 《Effective STL 中文版:50条有效使用 STL 的经验》
S. Meyers, 潘爱民, 陈铭, 邹开红. Effective STL 中文版:50条有效使用 STL 的经验. ISBN: 978-7-121-20125-7 STL (Standard Te ...
- android stl 3d模型,3D文件转化为STL文件 - 魔猴网
魔猴网免费在线3D文件转化工具常见问题 Q:什么是3D文件转化工具 A:3D文件转化工具是魔猴网针对3D打印文件推出的免费在线工具,可以将20多种常见的3D文件格式转化为可3D打印的文件格式,即stl ...
- STL源码剖析(一)STL简介
STL源码剖析(一)STL简介 文章目录 STL源码剖析(一)STL简介 一.STL概述 二.STL六大组件 2.1 容器(containers) 2.2 算法(algorithms) 2.3 迭代器 ...
- Effective STL中文版:50条有效使用STL的经验(双色)
<Effective STL中文版:50条有效使用STL的经验(双色)> 基本信息 作者: (美)梅耶(Meyers,S.) 译者: 潘爱民 陈铭 邹开红 出版社:电子工业出版社 ISBN ...
最新文章
- 不能查看隐藏文件夹的对策
- 三代测序原理与数据文件简介(SMRT+Nanopore)
- 记录一下提取文件夹中所有文件名字
- HDLBits答案(21)_Verilog有限状态机(8)
- [转帖]经典好文!看完后感到很震撼!
- 吃糖果(HDU-1205)
- Spring Cloud 服务安全连接 1
- Bailian3704 扩号匹配问题【堆栈】
- Linux查看和修改IP地址
- Java实现MySql分页查询
- Reset、clock、locked和dcm_locked之间的坑
- android 高德静态地图api,静态地图-API文档-开发指南-Web服务 API | 高德地图API
- 苹果计算机安装应用软件,苹果Mac电脑怎么安装软件和卸载软件?
- 日行一小步,坚持一大步
- 关于机械系2011年硕士生复试有关事…
- 2022-2028全球与中国定时器市场现状及未来发展趋势
- IOS之 上传App预览和截屏规范
- 全基因组关联分析(GWAS)
- Java操作excel文件插入数据
- Flask学习笔记之g对象
热门文章
- 【转】注册Azure AD 应用程序
- C#进阶系列——AOP?AOP!
- 排序集锦(各种排序算法的特点及性能分析)
- 选址问题java_学习使用分治算法来解决邮局选址问题(Java实现)
- linux mysql移植_linux 下mysql 移植设置方法
- python输入直角三角形a、b、输出斜边c_编写一个程序,输入直角三角形两条直角边a和b的长度,利用勾股定理计算斜边c的长度。要求结果保留2位...
- 大疆无人机高程不准_大疆消费级无人机快速倾斜摄影测量实践
- stl源码剖析_STL源码剖析 阅读笔记(二)allocator
- 【Python 必会技巧】使用 join() 方法将序列中的元素拼接成字符串
- Python3 爬虫学习笔记 C16【数据储存系列 — Redis】