随笔-59  评论-36  文章-0  trackbacks-0
SRC:my_vector - SRC

在写这段代码的过程中,遇见了“某些函数如何实现”这样的问题,于是就参考<STL 源码剖析>,说实话这本书虽然在硬盘里存在了好久,但直到此时才用上。其实在参考的时候也犹豫了,到底是应该完全按照自己的思路写,还是借鉴书上或他人的现有代码写,这种想法致使我当时还想顺带着连allocator类也一写,但最后的结果是借鉴并且放弃写allocator,理由是“一步步来”。


写完这些代码后,我初步得出这样的结论:模板很麻烦,迭代器很麻烦。模板只能看有关模板的书了,而对于迭代器,我起初的想法是能将自己写的容器兼容STL,但现在看来这很是一个天真的想法,因为我后来从论坛得知,STL中的各个模板间都是有类型依赖的,例如代码:
int a[]={3,4,6,3,87,654,3,9,8,1,9,10,51};
my_vector<int> test(a,a+13);

sort( test.begin() ,  test.end() );  //  OK!
sort( test.rbegin() ,  test.rend() );   //  编译错误,提示 "“iterator_category”: 不是“my_space::_R_Iterator<Iter_type>”的成员"

P.S. : my_space::_R_Iterator<Iter_type>是我自定义的逆序迭代器类

这就意味着,想写出兼容STL的东西,就必须先了解STL的内部。于是乎my_vector就只能自娱自乐了,除非我把整个STL都模仿出来或者想办法引入STL中的迭代器。



P.S. : my_vector类中的成员还有不少的问题尚未被发现
posted on 2009-05-08 15:13 zhaoyg 阅读(175) 评论(0)  编辑 收藏 引用 所属分类: 失败的尝试

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理