2018-02-10

Boolan STL 第二周

OOP与GP区别:OOP总是将data与methods关联在一起,GP则是将data与methods分开。

使用GP的好处:


algorithms的本质:最终都是元素之间比大小。

list为什么不能使用::sort()?:因为list内部元素是分开的,它的iterator不是random access iterator,无法使用algorithm提供的sort()。

无法被overload的符号:"::",".",".*"

allocator中的operator new()实现:调用malloc(),会额外占用空间记录申请内存大小(cookies)和填充pad到16的倍数,所以申请小块空间相较于申请大块空间的空间利用率会小的多。

G2.9的alloc优点:分成16块空间,从8byte开始每块空间存放的元素递增8byte,第16块空间存放元素为128byte,每块空间后面存放的元素之间没有cookies,只在整块前后有cookies,大大减少系统开销。

容器结构再分类:

list(双向循环链表结构):

list的iterator的实现:


iterator的实现的区别:除vector、array直接使用其指针外其他容器的iterator都是由smart pointer实现。

iterator必须提供的五种供algorithms的associated type:

iterator traits的用途:区分class iterator和non-class iterator,利用偏特化来实现5种associated type的提供,主要是为pointer类型提供typedef的功能。

完整的iterator_traits:

vector的代码实现:

vector的push_back实现:

vector的iterator实现:

array实现:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 速成不可能,因为绝大多数的成绩都需要时间来孕育,而时间可不会因为某个人的意志而改变其流逝的速度。 但快速入门绝对是...
    新小派自由行走的花阅读 95评论 0 0
  • 日本有一个国宝级的大厨,“寿司之神”小野二郎,今年已经92岁了。你要是到他的寿司店吃一次,一个人至少要花三万日元,...
    寻世良方Cc_Sandy拎0阅读 294评论 0 3
  • 各位亲爱的养生的佳人们大家晚上好。很高兴又和大家欢聚一堂来共同分享我们今晚的主题孝素轻断食。临近中国最传统最盛大的...
    朱卫英阅读 362评论 0 0
  • 嗨,大家好! 我家小弟就是呆萌的小正太,(你们可别以为他人小就好欺,其实他的“杀伤力”很大的喔。)所谓“...
    玉米头阅读 423评论 1 2
  • 1.三星手机调用系统照相机bug 2.解决Fragment的重复创建 3.解决Fragment的重复创建 在OnC...
    冲锋在路上的兵阅读 333评论 0 0