От cppreference , уникальная воля ...
Исключает все, кроме первого элемента из каждой последовательной группы эквивалентных элементов из диапазона
(выделено)
В примере на этой странице вызов unique()
для {1,2,1,1,3,3,3,4,5,4}
приведет к {1 2 1 3 4 5 4 x x x}
. Обратите внимание, как дубликаты 1 и 4 не удаляются. Это потому, что они не входят в «последовательную группу».
Поэтому, чтобы все ваши слова, начинающиеся с одной и той же буквы, были в «последовательных группах», сначала отсортируйте список:
void Fifth_task(list <string>& lst) {
lst.sort();
lst.unique(compare);
// ...
Смотрите это в действии здесь: https://ideone.com/1i48nj