最有效的存储、加载和查找词典的方法
C++ Most efficient way for storing, loading and looking up a lexicon
我有一本由单词及其音标组成的字典。所有的单词都是小写的,所以不涉及大小写敏感的搜索。
这个词典非常大,我需要在应用程序启动时快速加载它。我更喜欢阅读它,而不是单独阅读每一个条目。
我猜我存储和加载它的方式也影响了我在内存中保存词典的方式
谢谢你的建议
您可能希望将其存储为Trie
这是一种存储字典的有效方法。查看以下答案以获取更多信息
http://en.wikipedia.org/wiki/Trie https://stackoverflow.com/questions/296618/what-is-the-most-common-use-of-the-trie-data-structure保存一个尝试到一个文件- C
我想到了几个选项:
- 您可以使用sqlite(它使用
mmap
将文件映射到内存)来存储词典,以便只读取被访问的内容。这可能是合理的,快速可靠的,也是最容易实现的。 - 您可以自己
mmap
文件 - 使用
seek
操作在文件中移动文件指针,而不读取整个文件。这只有在词典以某种方式结构化时才有帮助,这样你就可以在不读取所有内容的情况下找到正确的位置,也就是说,它必须是一个允许比O(n)搜索更好的数据结构(Trie通常是一个很好的选择,正如Salgar所建议的那样)。
相关文章:
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 在C++中查找像素 RGB 数据的最快方法是什么?
- 查找定义我的 C/C++ 函数/宏的文件比'grep'更简单的方法
- 在向量中查找大于 0(或通常为 k)的最小元素的最佳方法是什么?
- 在目录中查找所有.cpp.h文件(include,src等)的传统方法
- Visual Studio 2015资源视图和资源编译器使用不同的方法在项目目录中查找图标文件.如何修复
- CMAKE:查找/添加Visual Studio或Windows SDK库和标头的正确方法?
- 我最近正在阅读opencv源代码。有没有更好的方法来在opencv库中查找类定义?
- 查找字符串是否包含字符串向量的任何一个元素的最佳方法
- 查找和替换子阵列的最佳方法
- 在矢量中查找映射键的最快方法
- 按名称查找进程 ID 的快速方法
- 需要帮助从12个字节生成新的24字节RGB查找阵列,或者是一种更好的编码方法
- 字符串查找方法找不到第一字母
- 按值在地图中查找 - 方法在速度方面的偏好
- 在std ::查找方法中的类对象的比较
- 是否有 std 或提升容器可以避免其插入和查找方法之间的争用条件
- 查找方法以查找较大字符串中的子字符串
- 在 std::wstring 中查找方法
- C++:查找方法