stdvector — ошибка C ++ std :: bad_alloc в std :: vector

Я понимаю, что этот вопрос задавался ранее, но ответы казались слишком точными по отношению к коду аскера.

Если это считается бесполезным дубликатом вопроса, не стесняйтесь удалить его или пометить как дубликат.

Насколько я могу судить, мой код верен для того, что я пытаюсь достичь, то есть для подсчета количества вхождений указанных слов в текстовом файле. Буду признателен за любую помощь, спасибо.

Ошибка

    This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
terminate called after throwing an instance of 'std::bad_alloc'
what():  std::bad_alloc

Часть моего main.cpp (вызывает проблему)

    //vectors to hold words from two files
vector<string> wordlist;
vector<string> file;
vector<int> searchVec;

//while a is not an empty string
while (a != "") {

//getNextWord() returns each word in order from a text file
//a is a play script, b is a list of words to search for
a = infile.getNextWord();
b = infile2.getNextWord();

file.push_back(a);

//counts total words in play script
count++;

//increments and adds each word from the list of words to search for to the vector
for (int i = 0; b != ""; i++) {

wordlist.push_back(b);

}

//cycles through words to search for
for (int j = 0; j < wordlist.size(); j++) {

//cycle through te play script
for (int k = 0; k < file.size(); k++) {

//if the current play script word is the same as the test word, up the count
if (file[k] == wordlist[j]) {

searchCount++;

}

}

//print appropriate output, re-initialise the count to 0 for the next word
cout << "The word " << wordlist[j] << " occurs " << searchCount << " times." << endl;

searchCount = 0;

}

}

-1

Решение

Как вы думаете, этот цикл заканчивается ?:

for (int i = 0; b != ""; i++) {

wordlist.push_back(b);

}
2

Другие решения