关于STL容器实现,非侵入式容器+Iterator框架和“侵入式”容器实现的思考

嗯,看Bjarne的《The C++ Programming Language》的时候记的。刚刚又看到,整理到BLOG上吧。
 
对于Iterator实现的缺点,即虚函数的调用造成的开销,解决方法只有抹去虚函数,然而这样又如何做到多态?
 
对于“侵入式”容器(注:即容器内元素需要继承容器框架提供的特定接口/超类才能放入容器的设计,如Java中只有Object的子类才能进入 Java的容器里……貌似是废话,但对cpp就不是了)。BJ(注:Bjarne,cpp老豆)认为基于Object的容器实现很糟糕。然而对于Java 这种单根继承的OO语言来说,基于Object的容器并不算是“侵入”(语言是“侵入”式的?)。这种容器的缺点就是转型和不能直接放入基本类型的麻烦以 及由此带来的性能开销。在JDK5中,自动装箱和泛型语法已经消除了这些人工上的因素,性能上的缺陷则无法弥补。
关于BJ认为的容器的“胖界面”,其实并不成为问题,如果一切有一个完好的约定的话,意思是说,若某个方法返回一个抽象到Collection的容器,我们会事实上的对这个容器做功能上的最小假设,即关于顺序,操作时间等都不要做过多的要求;而假如返值是 List,则我们就会希望它的有序性,以此类推。这种用接口表达出来的容器实质上也在传递“概念”而非“类”的观念。这和STL的观念是类似的。尽管对于Collection的“肥大界面”,很多方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值