Разработайте шаблонный класс SortedVector<T> - STL-совместимый контейнер, который хранит элементы в отсортированном порядке. Контейнер должен автоматически поддерживать элементы в отсортированном состоянии при вставке и обеспечивать эффективный поиск элементов.
-
Шаблонный класс
SortedVector<T, Compare = std::less<T>, Allocator = std::allocator<T>> -
STL-совместимые типы:
value_type,reference,const_reference,iterator,const_iterator,size_type,difference_type
-
Основные конструкторы:
- Конструктор по умолчанию
- Конструктор с компаратором
- Конструктор копирования и перемещения
-
Итераторы:
begin()/end(),cbegin()/cend()- Итераторы должны поддерживать категорию random access
-
Доступ к элементам:
front(),back()operator[]иat()
-
Модификаторы:
insert(const T& value)- вставка с поддержанием сортировкиerase(iterator pos)- удаление элементаclear()- очистка контейнера
-
Размер и ёмкость:
empty(),size(),capacity(),reserve()
-
Эффективный поиск:
bool contains(const T& value) const- проверка наличия значенияiterator find(const T& value)- поиск элемента (за O(log n))std::pair<iterator, iterator> equal_range(const T& value)- поиск диапазона равных элементов
-
Batch-операции:
void insert(InputIt first, InputIt last)- вставка диапазона элементовvoid insert(std::initializer_list<T> ilist)- вставка списка инициализации
-
Метод
shrink_to_fit()для оптимизации использования памяти -
Совместимость с алгоритмами поиска в отсортированном диапазоне