gpt4 book ai didi

C++ 搜索性能

转载 作者:行者123 更新时间:2023-11-30 01:29:19 25 4
gpt4 key购买 nike

我有两个文本文件。一个包含大约 70,000 个名称的列表 (~1.5MB)。另一个包含将从各种来源获得的文本。也就是说,每次执行程序时,该文件的内容都会发生变化(~0.5MB)。本质上,我希望能够将一些文本粘贴到文本文件中,然后查看从我的列表中找到了哪些名称。有点像查找功能 (CTR + F),但有 70,000 个关键字。

无论如何,到目前为止我所拥有的是:

int main()
{
ifstream namesfile("names.txt"); //names list
ifstream miscfile("misc.txt"); //misc text
vector<string> vecnames; //vector to hold names
vector<string> vecmisc; //vector to hold misc text
size_t found;

string s;
string t;

while (getline(namesfile,s))
veccomp.push_back(s);

while (getline(miscfile,t))
vectenk.push_back(t);

//outer loop iterates through names list
for (vector<string>::size_type i = 0; i != vecnames.size(); ++i) {
//inner loop iterates through the lines of the mist text file
for (vector<string>::size_type j = 0;j != vecmisc.size(); ++j) {
found=vecmisc[j].find(vecnames[i]);
if (found!=string::npos) {
cout << vecnames[i] << endl;
break;
}
}
}

cout << "SEARCH COMPLETE";

//to keep console application from exiting
getchar();

return 0;
}

现在,就提取我需要的数据而言,这非常有效,但是,它非常慢并且效率很低,因为每个名称都需要我可能再次搜索整个文件,这给出了(misc 文本文件中的 75000 x # 行)迭代。如果有人可以提供帮助,我当然会很感激。一些示例代码是最受欢迎的。此外,如果有任何不同,我正在使用 Dev C++。谢谢。

最佳答案

使用 std::hash_set .将所有关键字插入集合,然后遍历大型文档,每次遇到一个词时,测试集合是否包含该词。

关于C++ 搜索性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6079551/

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