发信人: hhuu (我爱XXX), 信区: Programming
标 题: boost::iterator_adaptor (III)
发信站: BBS 水木清华站 (Mon May 20 17:57:07 2002)
小技巧前面都讲过了, 最后来讨论一下存在的意义吧. ;)
iterator是stl的特征之一。通过iterator遍历容器, 通过*iterator访问容
器中的元素,这样的想法显然脱胎于指针。关于iterator和Doc/View结构的比
较,之前曾经在blitz的文档中提过(那篇C++若干技术的讨论结尾)。文中所
说的观念现在看起来不是很合适。事实上,每一个iterator都可以看作一个
View!通过改变iterator来实现对于同一Data的不同View的技巧, 也就是为
什么要使用iterator_adaptor最初的动机。
我觉得iterator_adaptor这里的adaptor并不切合它实际的意思,绝大多数情
况下,iterator_adaptor是包装原有的iterator,修改它的行为。希望大家
能提一个更好的说法。
如果对iterator本来就有所了解的话,你可以猜到iterator需要哪些模板参数。
这些参数当中最重要的就是policy了,这倒是名副其实的很,和dp中policy的
意思一样。iterator的处理方法就是把对iterator的操作转到policy中去完成。
而你实现一个自己的policy的方法,就是继承那个default_policy,然后用自
己的方法覆盖。比如说string中的iterator缺省是按char移动的,如果你改动
了policy,使他按word移动,那该如何?嗯,具体的实现就是
boost::tokenize。
--
※ 来源:·BBS 水木清华站 bbs.edu.cn·[FROM: 166.111.64.166]