文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>STL源码剖析 -- 读书笔记

STL源码剖析 -- 读书笔记

时间:2011-02-18  来源:AlexChan

2. 空间配置器(allocator)定义于<memory>中

3. 迭代器(iterator)最总要的作用就是对operator* 和 operator->进行重载(overloading)工作。

4. auto_ptr:用来包装原生指针(native pointer)的对象,内存漏洞(memory leak)问题可藉此获得解决。

5. Partial Specialization (偏特化) :如果 class template 拥有一个以上的 template 参数,我们可以针对其中某个(或数个,但非全部)template 参数进行特化工作。换句话说,我们可以在泛化设计中提供一个特化版本(也就是将泛化版本中的某些 template 参数赋予明确的指定)。

6.容器(内缩方式来表示基层与衍生层的关系,这里的衍生,不是派生(inheritance)关系,而是内含(containment)关系。例如:heap内含一个vector,priority-queue内含一个heap、stack和queue都内含一个deque,set/map/multiset/multimap 都内含一个RB_tree,hash_x 都内含一个hashtable。)

  序列式容器(Sequence Containers):

     array(build-in) C++内建

     vector

      <1> vector中增加新元素时,如果超过了当时的容量,则容量会扩充至两倍。如果容量仍不足,就扩张至足够大的容量。

      <2> 对vector的任何操作,一旦引起空间重新配置,指向元vector的所有的迭代器就都失效了。

      <3> 关于erase,erase有两种

        erase(iterator position) 删除位置为position的元素。

        erase(iterator __first, iterator __last)的删除区间为[__first, __last)。

      <4> 关于insert,insert有三种

        插入完成后,新节点将位于哨兵迭代器(__position)所指节点的前方——这是STL对于“插入操作”的标准规范。

        insert(iterator __position, const value_type& __x) :在__position之前插入x

        insert(iterator __position, size_type __n, const value_type& __x):在__position之前插入n个x

        insert(iterator __position, _InputIterator __first, _InputIterator __last):在__position之前插入[__first, __last)的元素

      heap:以算法形式呈现(xxx_heap)

        <1> STL提供的heap操作,只有make_heap(), pop_heap(), sort_heap()三个操作

          1、 关于make_heap(), 有两个版本

            make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last);

            make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp);

          2、 关于push_heap(), 也有两个版本,push_heap中[__first, last - 1)中的元素为一个合法堆,last - 1 处元素相当于入堆得元素。

            push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)

            push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)

          3、 关于pop_heap(), 也有两个版本,pop_heap之后,出堆的元素在__last-1位置

            pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)

            pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)

        <2> 关于heap应当的改进,希望能够加入修改堆中元素值的功能。可以命名为update();

        

        priority-queue

          <1> priority_queue 用 heap 实现的 vector序列。

          <2> priority_queue 不提供迭代器。

    list

    slist:非标准

    deque

      stack:配置器

        <1> stack 往往不被归类为 container(容器),而被归类为 container adapter。

      queue:配置器

  关联式容器(Associative Containers):

    RB-tree:非公开

      set

      map

      multiset

      multimap

    hashtable:非标准

      参照hash_map中的写法应该这样定义

        hashtable<pair<const key_type, value_type>,   

               key_type,   

              hash<key_type>,   

               _Select1st<pair<const key_type,value_type> >,  

                 equal_to<key_type>,  

               allocator<value_type>   

              > ht(50, hash<key_type>(), equal_to<key_type>());

      hash_set:非标准

      hash_map:非标准

      hash_multiset:非标准

      hash_multimap:非标准

7. 算法(Algorithms)

8. 配接器(Adapter)

相关阅读 更多 +
排行榜 更多 +
别惹神枪手安卓版

别惹神枪手安卓版

冒险解谜 下载
坦克战争世界

坦克战争世界

模拟经营 下载
丛林反击战

丛林反击战

飞行射击 下载