最有效的存储、加载和查找词典的方法

C++ Most efficient way for storing, loading and looking up a lexicon

本文关键字:查找 方法 加载 有效 存储      更新时间:2023-10-16

我有一本由单词及其音标组成的字典。所有的单词都是小写的,所以不涉及大小写敏感的搜索。

这个词典非常大,我需要在应用程序启动时快速加载它。我更喜欢阅读它,而不是单独阅读每一个条目。

我猜我存储和加载它的方式也影响了我在内存中保存词典的方式

谢谢你的建议

您可能希望将其存储为Trie

这是一种存储字典的有效方法。查看以下答案以获取更多信息

http://en.wikipedia.org/wiki/Trie

https://stackoverflow.com/questions/296618/what-is-the-most-common-use-of-the-trie-data-structure

保存一个尝试到一个文件- C

我想到了几个选项:

  1. 您可以使用sqlite(它使用mmap将文件映射到内存)来存储词典,以便只读取被访问的内容。这可能是合理的,快速可靠的,也是最容易实现的。
  2. 您可以自己mmap文件
  3. 使用seek操作在文件中移动文件指针,而不读取整个文件。这只有在词典以某种方式结构化时才有帮助,这样你就可以在不读取所有内容的情况下找到正确的位置,也就是说,它必须是一个允许比O(n)搜索更好的数据结构(Trie通常是一个很好的选择,正如Salgar所建议的那样)。