今天, 把第3章和第四章中的vector 看完了, 记录下自己的体会。
首先, 是iterator traits。 这个topic, 前前后后, 断断续续, 学习了很长的一段时间, 今天再来看看, 感到十分舒服, 没有了以往的陌生感, 真是书读百遍其义自现啊。 这里就记录下, 几个基本的概念。
1. 若要traits 能工作, 每个iterator就需要提供自己的nested typedef去定义相应的型别;
2. 设计适当的associated types 是iterator的责任, 而设计适当的iterator 则是 container的责任了。
这几点, 侯捷书中讲的很详细, 很好。
还有些基本的知识要重新温习下, 才能很好的理解iterator traits 的设计。
1. template parameter deduction;
2. partial specialization.
对于vector, 没什么好多说的, 比较有意思的就是它的memory management, 集中体现在插入的操作上。
图一, insert_aux()
图二, inert()。
两函数的逻辑都很清楚。 不过要注意
copy_backward(), uninitialized_copy() 等函数的使用。 都是挺方便的函数。
以上是我个人的记录, 算法中省越了一些细节, 不能直接照搬。
明天继续。
1:13:17 PM Tuesday, May 12, 2009