Создать шаблонную функцию, которая принимает итераторы на начало и конец последовательности слов, и выводящую в консоль список уникальных слов (если слово повторяется больше 1 раза, то вывести его надо один раз). Продемонстрировать работу функции, передав итераторы различных типов.
cpp
template <typename Iterator>
void printUniqueWords(Iterator begin, Iterator end) {
std::set<std::string> uniqueWords;
for (Iterator it = begin; it != end; ++it) {
uniqueWords.insert(*it);
}
for (const auto& word : uniqueWords) {
std::cout << word << std::endl;
}
}
Функция `printUniqueWords` реализована в виде шаблона и принимает два итератора – начало и конец последовательности. Она создает объект `std::set` с типом `std::string`, чтобы автоматически сортировать и удалять дубликаты слов. Затем она проходит по заданной последовательности и добавляет каждое слово в множество `uniqueWords`.
В конце функция проходит все уникальные слова множества `uniqueWords` и выводит их в консоль при помощи цикла `for` и объекта `std::cout`.
Теперь мы можем передать различные типы итераторов в функцию `printUniqueWords` и она будет работать с ними:
cpp
int main() {
// Демонстрация работы с итераторами строки
std::string text = "Hello World Hello C++ World";
std::string::iterator stringBegin = text.begin();
std::string::iterator stringEnd = text.end();
printUniqueWords(stringBegin, stringEnd);
// Демонстрация работы с итераторами вектора
std::vector<std::string> words = {"Hello", "World", "Hello", "C++", "World"};
std::vector<std::string>::iterator vectorBegin = words.begin();
std::vector<std::string>::iterator vectorEnd = words.end();
printUniqueWords(vectorBegin, vectorEnd);
return 0;
}
В этом примере мы демонстрируем работу функции `printUniqueWords` с итераторами строки и итераторами вектора. Сначала мы создаем строку `text`, содержащую несколько повторяющихся слов. Затем мы получаем итераторы начала и конца строки и передаем их в функцию `printUniqueWords`, которая выведет уникальные слова: "Hello", "World" и "C++". Аналогично мы создаем вектор `words` с повторяющимися словами, получаем итераторы и вызываем функцию `printUniqueWords`, которая также выведет уникальные слова.
Теперь у нас есть шаблонная функция `printUniqueWords`, которая работает с различными типами итераторов и выводит список уникальных слов в консоль. Эта функция удобна для обработки итераторов из различных контейнеров, таких как строки и векторы.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет