функции begin о и end(), показанные далее, подобны их дубликатам из библиотеки STL. // возвращает Iter для начала выделенной памяти. Iter<T> begin() { int size; if(isArray) size = arraySize; else size = 1; return Iter<T>(addr, addr, addr + size); } // Возвращает Iter для элемента, следующего за последним элементом // распределенного в памяти массива. Iter<T> end О { int size; if (isArray) size = arraySize; else size = 1; return Iter<T>(addr + size, addr, addr + size); } Функция begin о возвращает объект типа iter, указывающий на начало размещенного массива, чей адрес хранится в поле addr. Функция end о возвращает итератор iter, ссылающийся на элемент, следующий за последним элементом распределенного в памяти массива. Хотя ничто не мешает указателю типа GCPtr, ссылающемуся на одиночный объект, вызвать эти функции, их задача — обрабатывать размещенные в динамической памяти массивы (получение итератора iter для одиночного объекта безвредно, только лишено смысла).
|