вектор operator[]
не выполняет проверку границ. Итак, вот что происходит:
for (x = 0; x < keywords.size(); x++){
if (keywords[x].get_word() == word)
break;
}
, если это не находит ваш word
в векторе ключевых слов, x
будет размером ключевых слов.
vector <keyword_stat> t = keywords[x].get_stats();
штука за раз: keywords[x]
теперь читает за пределами вектора, возвращая мусор. .get_stats()
пытается вернуть вектор, но просто получает больше мусора.
t.size();
Теперь вы вызываете функцию для поврежденных данных.
Чтобы исправить это, проверьте x < keywords.size()
, прежде чем использовать его в vector::operator[]
- или просто используйте vector::at()
, который выполняет проверку границ.