在日志文件C 中删除重复条目
Deleting duplicate entries in a log file C++
我已经写了一个程序来通过日志文件解析。有问题的文件约为一百万个条目,我的目的是按日期删除所有重复条目。因此,如果日期有100个唯一的登录,则每个名称只会显示一个登录。我创建的日志输出是:
AA 01/Jan/2013
AA 01/Jan 2013
BB 01/Jan 2013
等。等等,整个月。
这是我到目前为止写的,for循环中的常数i是要通过和namearr&DateArr是用于名称和日期的数组。我的最终游戏是在每个日期对应的第一个字段中没有重复值。我正在尝试遵循适当的礼节和协议,因此,如果我不在这个问题上,我深表歉意。
我第一个想法解决这个问题是嵌套循环以将所有以前的名称与日期进行比较,但是由于我正在学习数据结构和算法分析,因此我不想爬到高运行时间。
if(inFile.is_open())
{
for(int a=0;a<i;a++)
{
inFile>>name;//Take input file name
namearr[a]=name;//Store file name into array
//If names are duplicates, erase them
if(namearr[a]==temp)
{
inFile.ignore(1000,'n');//If duplicate, skip to next line
}
else
{
temp=name;
inFile.ignore(1,' ');
inFile>>date;//Store date
datearr[a]=date;//Put date into array
inFile.ignore(1000,'n');//Skip to next like
cout<<namearr[a]<<" "<<datearr[a]<<endl;//Output code to window
oFile<<namearr[a]<<" "<<datearr[a]<<endl;//Output code to file
}
}
}
ughhh ...您最好使用正则表达式库来轻松处理文件的大小。检查Boost Regex
http://www.boost.org/doc/libs/1_55_0/libs/regex/doc/html/index.html
您可以构造由名称和简单字符串串联的日期组成的键。该字符串成为地图的索引。当您逐行处理文件时,请检查该字符串是否已经在地图中。如果是这样,那么您前一天就遇到了名字。如果您已经看到它已经做了一件事,如果是新事物,请做另一件事。
这是有效的。
相关文章:
- 将数组的地址分配给变量并删除
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C/C++编译器通常会删除重复的库吗
- 从链接列表c++中删除一个项目
- C++如何通过用户输入删除列表元素
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 使用函数"remove"删除重复元素
- 如何从多映射中删除特定的重复项
- 运算符C++ "delete []"仅删除 2 个前值
- 删除指向指针的指针是运行时错误吗
- Qt - 如何在 30 天后删除日志文件,文件名不固定
- 堆用于快速插入和删除O(日志n)
- 在日志文件C 中删除重复条目
- 基本的新建/删除操作员日志记录
- 如何在 android L 上加载 OpenCV 时删除日志记录语句
- NDK如何在发布时删除日志调试语句
- 如何从程序中删除日志调试语句