1)
class A
{
};
int main()
{
A a, b;
a = b;
}
Weźmy taki przykład będzie błąd bo nie zdefiniowano operatora przypisania. Ty w ten sposób przypisujesz wektory nie wiem czy działa to dobrze czy źle ale na wszelki wypadek mógłbyś zrobić że funkcje nic nie zwracają a za to wyślesz im referencje.
2)Nie wiem jak działa ta: find_first_of metoda więc na wszelki wypadek mógłbyś ją sprawdzić.
3) auto const& pierwszy raz takie coś widze może dobre ale dziwnie wygląda, nie prościej zostawić auto (w 2 forach)
4)
auto status = countWords.insert(make_pair(elem, 1));
if ( !status.second )
{
++status.first->second;
}
metoda insert zwraca chyba iterator nowoutworzonego elementu jeżeli się nie mylę. Po jaką holerę sprawdzasz czy wartość której przed chwilą przypisałeś 1 jest zerem? nie jestem do końca pewny czy insert w argumencie przyjmuje parę. Ja chyba bym po prostu zrobił tak:
countWords[elem] = 1;
W c# by takie coś nie przeszło bo jest dobrze chroniony i dobrze ale w c++ błędu nie będzie.