c++ - 如何通过预处理文件来访问 O(1) 中文件中的一行?

标签 c++ file

在 C++ 中,我想访问文件中的一行。该行包含一个键值对。我没有足够的程序内存来​​将其存储在映射中,因为值太大。

我想将文件中键的位置存储在 map 中。然后在查询进入时访问它们的值。是否可以在 O(1) 中执行此操作?如果是这样,我应该在 C++ 中使用什么,即 fseek() 等?另外, key 的位置需要存储什么?

提前致谢。

最佳答案

fseek() 只是在文件中移动读/写指针的系统调用;其复杂性完全取决于您的操作系统和文件系统,当然还有您的存储设备(例如,在 SSD 上,fseek(x) 的时间与上次和新的位置,而在磁带驱动器上,事情将取决于相对距离。除非你的操作系统开始在 RAM 中缓存文件内容,一旦你用完可用 RAM,它就会停止。

关于c++ - 如何通过预处理文件来访问 O(1) 中文件中的一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28459621/

相关文章:

c++ - 我应该声明方法 "const"如果它只是 "shallow const"而不是 "deep const"吗?

file - 部署war文件而不是展开目录有什么好处?

Java TCP 文件传输应用程序

file - 将包含目录的 SVN 修改文件复制到另一个目录

linux - 使用文件输入作为 shell 脚本的标准输入不起作用

c# - 如果目录内容在迭代过程中发生变化,Directory.EnumerateFiles 会发生什么?

c++ - 没有变量说明符的模板参数上的 SFINAE(enable_if)

c++ - C 编译器可以重新排列堆栈变量吗?

c++ - std::async 究竟是如何执行的?

c++ - 检查一个 vector 是否包含另一个 vector 的子字符串