我目前正在尝试创建一个 C++ 函数来连接两个管道分割文件,其中一个或两个关键字段上有超过 10.000.000 条记录。
字段看起来像
P2347|John Doe|C1234
P7634|Peter Parker|D2344
P522|Toni Stark|T288
和
P2347|Bruce Wayne|C1234
P1111|Captain America|D534
P522|Terminator|T288
要加入字段 1 和 3,预期输出应显示:
P2347|C1234|John Doe|Bruce Wayne
P522|T288|Toni Stark|Terminator
我目前正在考虑的是使用集合/数组/向量来读取文件并创建类似的内容:
P2347|C1234>>John Doe
P522|T288>>Toni Stark
和
P2347|C1234>>Bruce Wayne
P522|T288>>Terminator
然后使用滑动第一部分作为键并将其与第二个集合/向量/数组匹配。
我目前拥有的是:读入第一个文件并逐行匹配第二个文件。它需要整行并匹配它:
#include iostream>
#include fstream>
#include string>
#include set>
#include ctime>
using namespace std;
int main()
{
clock_t startTime = clock();
ifstream inf("test.txt");
set lines;
string line;
for (unsigned int i=1; std::getline(inf,line); ++i)
lines.insert(line);
ifstream inf2("test2.txt");
clock_t midTime = clock();
ofstream outputFile("output.txt");
while (getline(inf2, line))
{
if (lines.find(line) != lines.end())
outputFile > a;
return 0;
}
我很高兴有任何建议。如果有更好(更快)的方法,我也很乐意改变整个概念。速度至关重要,因为可能有超过 1000 万条记录。
编辑:另一个想法是拿一张地图,把钥匙当作钥匙——但这可能会慢一点。有什么建议么?
非常感谢您的帮助!