Dlaczego tak
Przekazanie przez referencję (&) nie kopiuje wektora, a słowo const sprawia, że funkcja nie może go zmienić — kompilator odrzuci każdą próbę modyfikacji. Typ zwracany double pozwala oddać średnią z częścią ułamkową, np. 2,5. Referencja bez const też unika kopiowania, ale pozwala funkcji zmienić dane wywołującego. Funkcja void niczego nie zwraca, a int obcina część ułamkową średniej i kopiuje wektor.