• 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. 总结起来如图:

  • 相关阅读:
    windows adb shell 乱码
    sqlite时间函数及时间处理
    .net资源实现多语言界面
    2013阿里巴巴实习生面试小结
    2013金山西居挑战赛初赛1—转自blog.csdn.net/asdfgh0308/
    不用+、-、×、÷数字运算符做加法—转自zhedahht.blog.163.com
    hash思想的应用转自www.cnblogs.com/huhuuu/
    面试智力题—转自blog.csdn.net/hackbuteer1
    Spring MVC 事务注解
    没有外键关联的 关系删除遍历判断
  • 原文地址:https://www.cnblogs.com/wuOverflow/p/4162078.html
Copyright © 2020-2023  润新知