STL源码剖析笔记
文章平均质量分 85
爱吃肉的糖醋排骨
这个作者很懒,什么都没留下…
展开
-
STL源码剖析笔记一空间配置器
今天终于开始了计划很久的看STL源码,过程应该很艰巨,我争取书博客各看一遍,为了防止看了就忘,准备做好笔记,在5天内看完。加油!一、空间配置器allocator1.1简介整个STL的操作对象都存放在容器中,而容器一定需要配置空间置放资料。空间不一定是内存,也可以是磁盘或其他辅助媒介。C++的内存配置操作和释放操作一般是这样:class foo{...}foo* pf=new原创 2016-08-20 14:19:24 · 344 阅读 · 0 评论 -
STL源码剖析笔记二迭代器
二、迭代器2.1C++模板 模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。 模板是一种对类型进行参数化的工具;通常有两种形式:函数模板和类模板;函数模板针对仅参数类型不同的函数;类模板针对仅数据成员和成员函数类型不同的类。 注意:模板的声明或定义只能在全局,命名空间或原创 2016-08-20 19:44:46 · 519 阅读 · 0 评论 -
STL源码剖析笔记三vector
三、vector容器 vector的数据安排以及操作方式,与array非常相似。两者的唯一区别在于空间的运用的灵活性。array是静态空间,一旦配置了就不能改变;要换个大(或小)一点的房子,可以,一切琐细都得由客户端自己来:首先配置一块新空间,然后将元素从旧址一一搬往新址,再把原来的空间释还给系统。vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。因此,原创 2016-08-21 19:21:29 · 309 阅读 · 0 评论 -
STL源码剖析笔记四List
相较于vector的连续线性空间,list就显得复杂许多,它的好处是每次插入或删除一个元素,就配置或释放一个元素空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素移除,list永远是常数时间。 list不仅是一个双向链表,而且还是一个环状双向链表。另外,还有一个重要性质,插入操作和接合操作都不会造成原有的list迭代器失效,这在vecto原创 2016-08-21 21:16:04 · 319 阅读 · 0 评论