|
Программирование >> Формирование пользовательского контейнера
return arrayptr[0]; Возвращает ссылку const на первый элемент. const Т &front() const return arrayptr[0]; Возвращает ссылку на последний элемент. Т &Ьаск() return arrayptr[len-1]; Возвращает ссылку const на последний элемент. const Т &Ьаск() const return arrayptr[len-1]; Функции итератора Поскольку итераторы объекта RangeArray - это просто указатели на память, заданную переменной arrayptr, реализация функций итератора beginO И end О Тривиальна. Обратите внимание - необходимы как константная, так и неконстантная версии функций. Возвращает итератор, указывающий на первый элемент. iterator beginO return fiearrayptr[О];, Возвращает итератор, указывающий на последний элемент. iterator endО return fiearrayptr[upperbound - lowerbound]; Возвращает итератор const на первый элемент. const iterator beginO const { return &arrayptr[0]; Возвращает итератор const на последний элемент. const iterator end() const return ficarrayptr[upperbound - lowerbound]; Разные функции Все последовательные контейнеры должны предоставлять следующие функции: SizeO, max sizeO, emptyO, swap О И clear О. Далее Приведен код этих функций. Возвращает размер контейнера. size type size О const return end() - begin(); Возвращает максимальный размер RangeArray. size type max sizeO { \ return a.max size(); Возвращает true, если контейнер пуст. bool enptyO return size О == 0; Обменивает значения двух контейнеров. void swap(RangeArray &b) RangeArray<T> tnp; tmp = *this; ♦this = b; Ъ = tup; Удаляет и уничтожает все элементы. void ClearO erase(begin(), endO ); По существу, действие функций интуитивно понятно. Тем не менее функция max sizeO заслуживает нескольких слов. Она возвращает количество элементов типа т, содержащихся в самом большом контейнере, который можно создать. Это число получено с помощью вызова функции распределителя памяти max size(). в класс RangeArray включена также необязательная функция at о, приведенная далее. Функция at о выполняет проверку выхода за границы. Возвращает ссылку на заданный элемент. Т &at(int i) { if(i < lowerbound i >= upperbound) throw out of range( Index Out of Range ); return arrayptr[i - lowerbound]; Возвращает ссылку const на заданный элемент. const Т &at(int i) const if(i < lowerbound i >= upperbound) -throw out of range( Index Out of Range ); return arrayptr[i - lowerbound]; Функция at () возвращает ссылку на элемент с заданным значением индекса. Она отличается от перефуженной операции индексирования operator[] () ТОЛЬКО тем, что выполняет проверку выхода индекса за границы диапазона (range check). Если значение индекса находится за пределами диапазона, генерируется исключение out of range. Это исключение определено в С++ и хранится в заголовочном файле <stdexcept>.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |