美文网首页
STL与泛型编程 Week2 (Boolan) by Im4li

STL与泛型编程 Week2 (Boolan) by Im4li

作者: Im4lish | 来源:发表于2017-08-25 00:30 被阅读0次

    1-源代码之分布(VC,GCC)
    2-OOP(面向对象编程) vs. GP(泛型编程)
    OOP试图将datas和methods联系在一起。数据和操作都放置在类中,数据是类本身的成员,方法通过类对象来调用。
    例如

    template <class T,
                     class Alloc = alloc>
    class list {
    ···
        void sort()
      };
    ///每一个容器元素各带有一个sort方法
    

    GP试图将datas和methods分开来。将methods设置为全局函数来接受数据。
    例如

    template <class T,
                     class Alloc = alloc>
    class vector{
    ···
      };
    template <class T,
                     class Alloc = alloc
                     size_t Bufsiz = 0>
    class deque{
    ···
      };
    template<typename _RandomAccessIterator>
    inline void 
    sort(_RandomAccessIterator __first,
           _RandomAccessIterator  __last)
    {
    ···
    }
    //不止以上两个容器,凡是只要提供了_RandomAccessIterator  的容器均可以使用该sort函数。
    

    采用GP可以得到低耦合度的代码。
    3-技术基础:操作符重载and模板(泛化、全特化、偏特化)
    泛化

    template <class T>
    class xxx {
    ···
    };
    

    特化

    template<> class xxx<x> {
    ···
    };
    

    个数偏特化

    /*
    template <class T, class Alloc = alloc>
    class vector
    {
    ···
    };
    */
    template<class Alloc>
    class vector<bool, Alloc>
    {
    ···
    };
    

    范围偏特化

    template <class T>
    class xxx {
    ···
    };
    template <class T>
    class xxx<T*> {//接受指针参数
    ···
    };
    

    4-分配器
    分配器底层由malloc,主要目的是为了节省内存空间,减少多余的overhead。
    5-容器之间的实现关系与分类

    容器

    6-深度探索list
    list容器是一种包含前驱指针和后向指针的双向链表。

    7-迭代器的设计原则和Iterator Traits的作用与设计
    Iterator必须提供5种的associate types

    typedef xxx iterator_category;
    typedef T    value_type;
    typedef Ptr pointer;
    typedef Ref reference;
    typedef ptrdiff_t difference_type;
    
    Iterator Traits的框架

    8-vector深度探索
    一般实现中,vector容器的容积以二倍的形式增长,而在增长的过程中,由于vector是一个连续容器,会有消去原来所占有内存的多余开销。
    9-array&forword_list深度探索
    array相对于内置数组提娜佳了容器的特性,可被用来完全替代数组。

    相关文章

      网友评论

          本文标题:STL与泛型编程 Week2 (Boolan) by Im4li

          本文链接:https://www.haomeiwen.com/subject/mamydxtx.html