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 阅读(211)
评论(0) 编辑 收藏 引用 所属分类:
失败的尝试