Блок задач

4. Один класс

Темы
Сложность 4

Задача «Гистограмма»

Необходимо разработать класс для работы с гистограммой (частотным словарём).

Входные данные

Файл с последовательностью каких-либо идентификаторов (например, чисел). Пример фрагмента файла:

... 1 2 3 1 2 3 56 5 6 7 5 6 7 ...

Задача

Реализовать класс «Гистограмма» с поддержкой следующей функциональности:

  • Хранение словаря пар «идентификатор — количество вхождений».
  • Создание гистограммы из входного потока std::istream (подсчет количества вхождений)
  • Создание гистограммы по std::vector<std::string>.
  • Создание гистограммы по другой гистограмме (конструктор копирования).
  • Возможность итерирования по гистограмме. Методы begin() и end().
  • Сложение с другой гистограммой (перегрузка operator+).
  • Вычитание другой гистограммы (перегрузка operator-).
  • Проверка равенства двух гистограмм (перекрытие operator==).

Тестирование

Необходимо реализовать тесты на каждый метод.