STL 六大组件, 功能与运用概要

本文详细介绍了C++标准模板库(STL)的六大核心组件:容器、算法、迭代器、仿函数、配接器及配置器的功能与作用,并阐述了它们之间的协同合作方式。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值