4) Это круто.

я есть два текстовых файла. Один содержит список из примерно 70000 имен (~ 1,5 МБ). Другой содержит текст, который будет получен из разных источников. То есть содержимое этого файла будет меняться при каждом запуске программы (~ 0,5 МБ). По сути, я хочу иметь возможность вставить текст в текстовый файл и посмотреть, какие имена из моего списка найдены. Вроде как функция поиска (CTR + F), но с 70000 ключевых слов.

В любом случае, что я имею до сих пор:

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;
 }

Теперь это прекрасно работает для извлечения необходимых мне данных, однако, это ужасно медленно и очевидно неэффективно, поскольку каждое имя требует, чтобы я потенциально искал весь файл снова, что дает (75000 x # строк в текстовом файле misc) итерации. Если бы кто-то мог помочь, я был бы очень признателен. Некоторые примеры кода приветствуются. Кроме того, я использую Dev C ++, если это имеет какое-либо значение. Благодарю.

Ответы на вопрос(3)

Ваш ответ на вопрос