zoukankan      html  css  js  c++  java
  • STL源码阅读-functor与adapter

    为什么要用仿函数

    函数指针不灵活,难以与STL其他组件配合使用

    Adapter

    将一个class的接口转换为另一个class的接口,使原本因接口不兼容而不能合作的classes,可以一起运作

    STL中的adapter

    function adapter

    改变functor的接口,一般通过函数组合来体现

    container adapter

    改变container的接口, 如queue和stack其实是deque修改而来

    iterator adapter

    改变iterator的接口,如

    • insert iterator 将一般迭代器的赋值转变为插入,如copy函数的代码
      • back_inserter(Container& x)
      • front_inserter(Container& x)
      • inserter(Container& x, Iterator i)
    • reverse iterator 将一般迭代器的行进方向逆转
      • iostream iterator 将迭代器绑定到某个iostream对象上
      • istream iterator 如将operator++变为operator>>

    总结

    仿函数重载operator()
    迭代器重载operator*,operator++等指针惯常行为
    容器和迭代器身上的配接器是一种模板

    参考

    • STL源码剖析第8章
  • 相关阅读:
    [包计划] date-fns
    [包计划] create-react-app
    [包计划] js-cookie
    [包计划] cheerio
    [包计划] 30-seconds-of-code
    new
    [源计划] array-first
    [源计划] is-sorted
    [源计划] array-flatten
    images
  • 原文地址:https://www.cnblogs.com/qbits/p/11611272.html
Copyright © 2011-2022 走看看