|
Программирование >> Формирование пользовательского контейнера
Контейнер для массива с настраиваемым диапазоном. teBplate<class Т, class Allocator = allocator<T> > class RangeArray { T *arrayptr; указатель на базовый массив контейнера unsigned len; хранит длину контейнера int upperbound; нижняя граница int lowerbound; верхняя граница Allocator а; распределитель памяти public: Спецификаторы typedef, необходимые для контейнера. typedef Т value type; typedef Allocator allocator type; typedef typename Allocator::reference reference; typedef typename Allocator::const reference const reference; typedef typename Allocator::size type size type; typedef typename Allocator::difference type difference type; typedef typename Allocator::pointer pointer; typedef typename Allocator::const pointer const pointer; Итераторы прямого направления. typedef Т iterator; typedef const T * const iterator; Замечание: Этот контейнер не поддерживает итераторы обратного направления, но вы можете добавить их, если захотите. ***** Конструкторы и деструктор ***** Конструктор, заданный по умолчанию. RangeArray() upperbound = lowerbound = 0; len = 0; arrayptr = a.allocate(0); Конструирует массив заданного диапазона с присваиванием каждому элементу начального значения. RangeArray(int low, int high, const T &t); Конструирует массив с отсчетом от нуля из пглп элементов со значением t. Этот конструктор необходим для совместимости с библиотекой STL. RangeArray (int пглп, const Т &t=T()); Конструирует на основе заданного диапазона итераторов. RangeArray(iterator start, iterator stop); Копирующий конструктор. RangeArray(const RangeArray &o); Деструктор. -RangeArray{); ***** Функции перегрузки операций Возвращает ссылку на заданный элемент. Т &operatort](int i) return arrayptr[i - lowerbound]; Возвращает ссылки const на заданный элемент. const Т ficoperator[](int i) const return arrayptr[i - lowerbound]; Присваивает один контейнер другому. RangeArray &operator=(const RangeArray &o); ***** Функции вставки Вставляет val по адресу p. iterator insert(iterator p, const T &val); II Вставляет пглп копий значения val, начиная с адреса р. void insert (iterator р, int пглп, const Т &val) for(; num>0; пглп-) p = insert(p, val) + 1; Вставляет ряд элементов, заданный start и stop по адресу р. void insert(iterator р, iterator start, iterator stop) while(start != stop) { p = insert(p, *start) + 1; start++; ***** Функции очистки ***** Стирает элемент в р. iterator erase(iterator р); Стирает заданный диапазон элементов, iterator erase(iterator start, iterator stop) { iterator p = end(); for (int i=s top-start; i > 0; i~) p = erase(start); return p; ***** функции Push и Pop ***** Добавляет элемент в конец, void push back(const T &val) { insert(end(), val); Удаляет последний элемент.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |