1) Jeśli używasz vector'ów to dostęp do poszczególnych elementów uzyskasz za pomocą metody .at(), ona jest bezpieczniejsza i rzuca wyjątkiem przy próbie dostępu do nieistniejących elementów
2) Zaczynaj od wartości counter = 0, a nie jeden, na początku masz całkowicie pusty wektor, więc próbujesz uzystać dostęp do elementu 0, który nie istnieje (w pierwszej pętli), co skutkuje próbą dostępu do niezaalokowanego fragmentu pamięci.
3) W pierwszej pętli i < counter, będzie bezpieczniejszy od i != counter
4) Tego else nie powinno być w pierwszej pętli, powinno to wyglądać mw tak:
while (cin >> x) {
bool found = false;
for(int i = 0; i < count; i++) {
if (word_input.at(i) == x) {
word_count.at(i) += 1;
found = true;
}
}
if(!found) {
word_input.push_back(x);
word_count.push_back(1);
++count;
}
}
5) Nie musisz używać innych nazw iteratorów przy osobnych pętlach for (i, j), tak robi się tylko w zagnieżdżonych pętlach
Duży PLUS za język angielski w kodzie, tak właśnie powinno być a nie jakieś polskie nazwy (a tfu), które nie powinny mieć miejsca, a u początkujących to częsta praktyka ;f
Pozdrawiam!