Skip to content

Latest commit

 

History

History

STL

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Лабораторная работа 3: STL Контейнеры

Контейнеры

Реализовать кольцевой буфер в виде stl-совместимого контейнера (например, может быть использован с стандартными алгоритмами), обеспеченного итератором произвольного доступа. Реализация не должна использовать ни одни из контейнеров STL. Буфер должен обладать следующими возможностями:

  1. Вставка и удаление в конец
  2. Вставка и удаление в начало
  3. Доступ в конец, начало
  4. Доступ по индексу
  5. Изменение капасити

Алгоритмы

Требуется реализовать следующие обобщенные алгоритмы.

  1. all_of - возвращает true, если все элементы диапазона удовлетворяют некоторому предикату. Иначе false.
  2. any_of - возвращает true, если хотя бы один из элементов диапазона удовлетворяет некоторому предикату. Иначе false.
  3. none_of - возвращает true, если все элементы диапазона не удовлетворяют некоторому предикату. Иначе false.
  4. one_of - возвращает true, если ровно один элемент диапазона удовлетворяет некоторому предикату. Иначе false.
  5. is_sorted - возвращает true, если все элементы диапазона находятся в отсортированном порядке относительно некоторого критерия.
  6. is_partitioned - возвращает true, если в диапазоне есть элемент, делящий все элементы на удовлетворяющие и не удовлетворяющие некоторому предикату. Иначе false.
  7. find_not - находит первый элемент, не равный заданному
  8. find_backward - находит первый элемент, равный заданному, с конца
  9. is_palindrome - возвращает true, если заданная последовательность является палиндромом относительно некоторого условия. Иначе false.

Каждый алгоритм должен быть выполнен в виде шаблонной функции, позволяющей взаимодействовать со стандартными контейнерами STL с помощью итераторов. Предикаты, условия, операторы сравнения должны быть параметризованы. При сдаче работы требуется продемонстрировать работу алгоритмов как на стандартных, так и на пользовательских типах данных, например CPoint, CRational, далее работает ваша индивидуальная (не “коллективная”) фантазия.