gpt4 book ai didi

c++ - 在 C/C++ 中搜索大文件中的数据

转载 作者:太空狗 更新时间:2023-10-29 19:45:01 24 4
gpt4 key购买 nike

我有一个具有这种格式的日志文件:

DATE-TIME ### attribute1  ### attribute2 ###attribute3 

我必须在这个日志文件中搜索输入属性(从命令行输入)并输出与输入属性匹配的行。
一个天真的方法可能是这样的:

scan the entire file line by linesearch for the attributeprint if found, else ignore.

这种方法很慢,因为它需要 O(n) 次比较,其中 n 是可能非常大的行数。
另一种方法可能是使用哈希表,但可能无法为大文件保留这样的内存中哈希表。
那么,最好的可行方案是什么?我怎样才能根据各种属性为整个文件编制索引?

编辑:
日志文件可能有 100K 行左右,几乎像 linux 上的系统日志文件。在一次调用中,用户可以搜索多个属性,直到第一个属性的搜索像交互式控制台一样完成后才知道。

谢谢,

最佳答案

如果你只搜索一次,你不能比 O(n) 做得更好。

如果哈希索引太大而无法放入内存,请使用磁盘上的哈希,如 dbmgdbm .

编辑:我想指出,KeithB 建议的 Berkeley DB 工具在磁盘哈希上属于此类。 Berkeley DB 不是使用 SQL 的关系数据库。

关于c++ - 在 C/C++ 中搜索大文件中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2210234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com