美文网首页
Week7(Boolan)

Week7(Boolan)

作者: DangerousMan | 来源:发表于2017-06-01 21:19 被阅读0次

源代码之分布VC GCC

gnu 2.91 标准库是用generic programming写成的,将data和methods分开来,借助iterator迭代器让methods获取data

list不能用::sort()排序是因为全局的sort要求传入的iterator属于random access iterator类型,可以类似指针一样进行+、-、*、/的操作,而list这种容器是由指针链接的一个个节点构成,并不连续,不能进行+、-、*、/操作。

字符串默认的比大小方式是字典序,不论长度。

操作符重载

对于iterator来说,因为它是泛化的指针,所以对它需要重载可以用在指针上的各种操作符

模板

template <class T>或template <typename T>都可以

类模板在使用时必须标注类型,而函数模板在使用时可以通过argument deduction实参推导

特化 template<> 

例一 例二 例三

偏特化

多个模板参数,只绑定其中一个

struct iterator_traits<T*>范围上的偏特化

回归到c语言的malloc,再调用操作系统API拿到内存。

VC,BC,GNUC4.9下

allocate---->operator new---->malloc---->附加部分大小基本固定,其比例随着所取内存大小减小而增加,额外开销也增加

deallocate---->operator delete---->free

allocate<int>()临时的int类对象

GNUC2.9下更好的allocator,设计了16个链表,分别用于存储整数倍8个字节的元素,元素最大可为8*16=128字节,减少了调用太多次malloc所造成的cookie引起的开销,在GNUC4.9下改名为__pool_alloc,用法:

蓝色部分为容器本身大小,与容器中的元素多少即大小无关,GNUC4.9版本下list为8字节是因为list的结构被重新设计成复杂的关系,最终还含有环状结构的end指针。

list要内存时以每个节点为单位,而每个节点包括了元素本身和指向前后节点的两根指针

除了array和vector之外所有容器的iterator都必须是class,才能有“智能”,即iterator++会指向下一个节点。所有容器的iterator都至少有5个typedef,并且有一堆操作符重载

1.拷贝构造=优先于*,而=又北重在,使得*作为参数并没有调用起重载后的*

2.因为int++++的操作是不允许的,所以将i++的返回类型设计为不带引用。

*及->的重载思路

代码规范(从GNUC2.9到4.9版本)

相关文章

  • Week7(Boolan)

    源代码之分布VC GCC gnu 2.91 标准库是用generic programming写成的,将data和m...

  • 2018-01-03

    Boolan第二周 class with pointer members: Big Three:拷贝构造、拷贝赋值...

  • JK计划训练日记

    Week7 Day 6 June 23 Strict pull up 3 unbroken sets x 12 r...

  • CS229 Week7 SVM

    title: CS229 Week7 SVMdate: 2017-03-26 18:44:02categories...

  • Boolan/STL 与泛型编程 part1

    @(boolan C++)[STL]2017-11-20 12:10:37 / herohlc 使用一个...

  • 麻袋产品汪 APT W7:后台产品逻辑|竞品分析入门|微信小程序

    发布日期:2016-09-24 编辑:朱老湿 版本:Week7 说明:APT=Awesome product to...

  • 2018-01-13

    Boolan第三周 relationships between classes : 类与类之间的关系:继承(inh...

  • week7

    视频总结 final exam :报错:'int' object is not callable,此参数已被声明为...

  • Week7

    本周目标 完成同时使用生成的配置文件以及读取原来DB中的配置文件,并且根据同一个domain object的改动生...

  • week7

    工作: 过完年的第一周就很忙,因为别的国家没有放假。 接手过来的项目,有很多吐槽的地方。比如流程上可以在生产环境随...

网友评论

      本文标题:Week7(Boolan)

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