我擁有的是兩個文本文件。其中一個包含約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))
vecnames.push_back(s);
while (getline(miscfile,t))
vecmisc.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;
}
但是現在這個偉大的工程,只要提取我需要的數據,它是非常緩慢的,顯然效率不高,因爲每名需要我可能再次搜索整個文件,這會給出(75000 x混雜文本文件中的行)迭代。如果有人可以幫助,我一定會很感激。一些示例代碼是最受歡迎的。另外,如果這有什麼不同,我使用Dev C++。
有人建議我在我的數據上實現一個哈希集,但是,我不知道如何去做這件事。如果有人瞭解我如何應用這種方法,我會感激一個正確的方向。真誠的感謝。
您的代碼示例缺少您在代碼中使用的veccomp和vectenk的定義。 – 2011-05-22 13:21:06
固定爲你 – sehe 2011-05-22 14:03:55
請不要重新發布相同的問題。如果您想添加更多的信息,請修改原件。 – finnw 2011-05-22 14:12:31