Шаг 559.
Библиотека STL. Распределители памяти. Требования к распределителям памяти. Определения типов
На этом шаге мы рассмотрим определения различных типов.
В этом и следующих шагах перечислены типы и операции, которые должны поддерживаться распределителями в соответствии с требованиями стандарта. Для
распределителей, которые могут использоваться стандартными контейнерами, устанавливаются особые требования - более жесткие, чем для обычных распределителей.
Определения типов
распределитель::value_type
- Тип элементов. Эквивалент Т для allocator<T>.
распределитель::size_type
- Тип беззнаковых целочисленных значений, представляющих размер наибольшего объекта в модели распределения памяти.
Чтобы распределитель мог использоваться со стандартными контейнерами, этот тип должен быть эквивалентен size_t.
распределитель::difference_type
- Тип знаковых целочисленных значеиий, представляющих разность между двумя указателями в модели распределения памяти.
Чтобы распределитель мог использоваться со стандартными контейнерами, этот тип должен быть эквивалентен ptrdiff_t.
-
- Тип указателя на тип элемента.
Чтобы распределитель мог использоваться со стандартными контейнерами, этот тип должен быть эквивалентен Т* для allocator<T>.
распределитель::const_pointer
- Тип константного указателя на тип элемента.
Чтобы распределитель мог использоваться со стандартными контейнерами, этот тип должен быть эквивалентен const Т* для allocator<T>.
распределитель::reference
- Тип ссылки на тип элемента. Эквивалент Т& для allocator<T>.
распределитель::const_reference
- Тип константной ссылки на тип элемента. Эквивалент const T& для allocator<T>.
-
- Шаблонная структура, позволяющая любому распределителю косвенно выделять память для другого типа. Объявление должно выглядеть так:
template <class T>
class распределитель
{ public:
template <class U>
struct rebind {
typedef распределитель<U> other;
. . . .
};
. . . .
}
Назначение структуры rebind разъясняется в 557 шаге.
На следующем шаге мы рассмотрим операции.
Предыдущий шаг
Содержание
Следующий шаг