正文

谈谈OF中的dictionary2008-10-29 16:56:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/bioexplore/39140.html

分享到:

dictionary,顾名思义即是字典的意思,那么针对一个关键词,便可在其中找到与之相应的“内容”,这里的“内容”在OF中以entry类对象的形式表现,这里面包括dictionaryEntry和primitiveEntry,这两个类的对象是dictionary对象中保存的最终的entry的形式。那么entry又是如何组织具体的数据的呢,通过阅读相关类实现源代码可以看出:实际上保存在dictionary的数据是保存在dictonary的私有变量hashedEntries_中,该变量是HashTable<entry*>类的实例,可以看作是一个保存有一系列entry的指针的hash表,可以通过每个entry指针对应的关键字(keyword)在该表中找到实际的entry对象的指针。
从根本上来说,dictionary中保存的dictionaryEntry是dictionaryEntry中的dictionary组件中的内容(dictionaryEntry公有继承自entry和dictionary),保存的primitiveEntry是保存的primitiveEntry中ITstream中tokenList组件中的内容(primitiveEntry公有继承自entry和ITstream,而ITstream公有继承自Istream和tokenList)。所以最终一个dictionary中保存的有用信息就是能够访问dictionaryEntry中dictionary组件中的tokenList中的token,或者是能够访问primitiveEntry中tokenList中的token的相应指针。保存指针一方面节省了空间,同时是执行效率也大大增加。
另外我们知道entry虽然是一个双向链表的节点类(继承自IDLList<entry>::link),即它具有指向前一元素的指针prev_(可公有访问的)又具有指向后一元素的指针next_(可公有访问),但是在dictionary中保存的entry对象都不在链表中,因而prev_=next_=null。

想到哪写到哪,内容有些乱!

阅读(6428) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册