挖井

类库大魔王的挖井日记

挖一口属于自己的井


让自己的数据结构支持std::for_each了

  经过几个小时的努力敲打键盘,终于让自己的数据结构支持std::for_each了。昨天我是过高地估计了其实现难度,其实看看for_each的实现代码,非常简单的算法,只要能让iterator支持前置++和提领(这是jjhou的叫法,就是对指针取值)操作符即可。这些内容昨天就知道了,但是自己没有动手做完前,总是心虚的。
  实现过程基本上还算顺利,虽然老是编译不过,但VC的提示信息很详细,准确性也很好。在这个任务中,我觉得最好iterator不知道指向的类型,STL就是这样做的,也不是为了什么软件工程或者代码美感方面考虑,而是这样做对于实现者来说似乎更容易理解。
  我在中间也犯了个比较严重的错误。因为NodeList已经被封装成一个类了,而我的设计里,iterator需要保存对NodeList的引用,所以我就很习惯成自然地用这个封装类了,另一方面,因为需要,NodeList封装类中也需要这个iterator类型,于是就成交叉引用了,编译都过不了。后来才想到,在iterator中使用封装类并没有得到多少好处,反而似乎增加了实现复杂度,直接用MSXML中的原始类型就行了。
  嗯,略有收获,呵呵!

本文地址:

https://minidump.info/blog/2008/03/e8-ae-a9-e8-87-aa-e5-b7-b1-e7-9a-84-e6-95-b0-e6-8d-ae-e7-bb-93-e6-9e-84-e6-94-af-e6-8c-81stdfor_each-e4-ba-86/

上一篇

让自己的数据结构支持std::for_each

  今天看到代码中有很多处遍历XML DOM的NodeList中所有元素的操作,同事用MFC的CString在MSXML上面又加了一层封装,使得MSXML用起来更加方便,但在这个NodeList的封装上,遍历操作只有通过next方法,或者以索引号遍历,我开始用他这个封装时抄的他的代码,都用wh...…

CPPOOPGPXP 全文阅读
下一篇

从文本编辑转向图形编辑

  看了一点SciTE的代码,因为从SciTE可以看到Scintilla控件的各种使用方法,说起来Impeller也使用的Scintilla,但是总感觉很弱,比如SciTE可以同时直接支持UTF-8和ANSI编码的文件,而Impeller就不行,一个时刻只能支持一种,另一种编码的文件打开时,如...…

Job 全文阅读