Шаг 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 шаге.
 
   
На следующем шаге мы рассмотрим операции.
Предыдущий шаг 
 
Содержание 
 
Следующий шаг