博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL 六大组件, 功能与运用概要
阅读量:6982 次
发布时间:2019-06-27

本文共 967 字,大约阅读时间需要 3 分钟。

1. 容器(constainers) 现成的模版形式的数据结构, 如 vector, deque, set, map... 主要用来存放数据;

2. 算法(algorithms) 我倾向于叫做泛型算法, 常见的有 sort, search, copy, erase... 主要用函数模板实现;

3. 迭代器(iterators) 虽然 C++ 是 C 的超集, 但是一个指针满天飞的 programer 从某种意义上来说不是一个好的 C++er. 迭代器主要扮演容器预算法间的媒介, 所谓的 "泛型指针" 主要有五种类型和其他的衍化. 从实现的角度来看, 迭代器是一种将 operator*, operator->, operator++. operator-- 等指针相关操作予以重载的 class template. 每一个 STL 容器(大佬) 都有自己专属的迭代器(小弟). 另外, 原生指针也是一种迭代器.

4. 仿函数(functors) 行为类似函数又不是函数, 可作为算法的某种策略, 是重载了 operator() 的 clas 或 class template, 一般的函数指针可视为一种仿函数.

5. 配接器(adapters) 我觉得是不是就是适配器? 一种用来修饰容器或仿函数或迭代器接口的东西, 如 queue 和 stack, 这两个看着是容器, 实际只是一种配接器, 因为它们的底层操作完全是 deque 来干活. 组件间的转接器.

6. 配置器(allocators) 宾馆的服务员, 只管开房和清理房间, 不管你在里面做什么. 负责空间的配置与管理, 实际是一个实现了动态空间配置, 空间管理, 空间释放的 class template.

这六大组件的关系是协(xiang)同(ai)合(xiang)作(sha):
Container 通过 Allocator 取得数据储存空间, Algorithm 通过 Iterator 存取 Container 内容, Functor 可以协助 Algorithm 完成不同的策略变化, Adapter 可以修饰套接 Functor. 总结起来如图:

转载于:https://www.cnblogs.com/wuOverflow/p/4162078.html

你可能感兴趣的文章
spring mvc如何计算BEST_MATCHING_PATTERN_ATTRIBUTE
查看>>
jQuery源码 - extend 继承&拷贝 解析
查看>>
Spark on Angel:Spark机器学习的核心加速器
查看>>
Facebook开源ptr:在Python环境中并行运行单元测试
查看>>
Redis高可用之主从复制实践(四)
查看>>
SpringBoot 手写拦截器
查看>>
为什么我们做分布式使用Redis?
查看>>
py 决策树①
查看>>
帮您找到正确的提问渠道
查看>>
JavaScript—ES6关于Promise的用法(19)
查看>>
Google发布机器学习平台Tensorflow游乐场~带你玩神经网络(转载)
查看>>
centos6.0下安装FTP客户端命令
查看>>
SAN存储方式之falconstor实施方案(2)
查看>>
Bokeh快速入门(1)
查看>>
读取本机的Java运行环境和相关配置文件的内容
查看>>
Linux系统下的RZSZ(文件传输工具)
查看>>
第5章选择结构程序设计
查看>>
linux 下网络流量监控
查看>>
[CentOS6] Page allcation failure
查看>>
MagicLinux+MySQL5+PHP5+Apache2+phpMyAdmin
查看>>