zoukankan      html  css  js  c++  java
  • 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. 总结起来如图:

  • 相关阅读:
    1137. 第 N 个泰波那契数
    486. 预测赢家
    python函数—函数的参数+递归函数
    python函数—调用函数+定义函数
    Seize the day
    数学建模基础学习2-matlab + lingo
    Python基础--使用list和tuple+条件判断+使用dict和set
    经济学人精读丨中国的电子商务
    数学建模基础学习1
    C盘今天爆掉了,罪魁祸首--百度云管家
  • 原文地址:https://www.cnblogs.com/wuOverflow/p/4162078.html
Copyright © 2011-2022 走看看