allocator();
~allocator();
pointer address(reference x);
const_pointer const_address(const_reference x);
pointer allocate(size_type n);
void deallocate(pointer p);
size_type init_page_size();
size_type max_size();
};
class allocator‹void› {
public:
typedef void* pointer;
allocator();
~allocator();
};
Предполагается, что в дополнение к allocator поставщики библиотеки обеспечивают распределители для всех моделей памяти.
Контейнеры
Контейнеры - это объекты, которые содержат другие объекты. Они управляют размещением в памяти и свобождением этих объектов через конструкторы, деструкторы, операции вставки и удаления.
В следующей таблице мы полагаем, что X - контейнерный класс, содержащий объекты типа T, a и b - значения X, u - идентификатор, r - значение X&.
Таблица 8. Требования контейнеров
выражение | возвращаемый тип | семантика исполнения | утверждение/примечание состояние до/после | сложность |
---|---|---|---|---|
X::value_type | Т | - | - | время компиляции |
X::reference | - | - | - | время компиляции |
X::const_reference | - | - | - | время компиляции |
X::pointer | тип указателя, указывающий на X::reference | - | указатель на T в модели памяти, используемой контейнером | время компиляции |
X::iterator | тип итератора, указывающий на X::reference | - | итератор любой категории, кроме итератора вывода. | время компиляции |
X::const_iterator | тип итератора, указывающий на X:: | - | постоянный итератор любой категории, кроме итератора вывода. | время компиляции |
X::difference | знаковый целочисленный тип | - | идентичен типу расстояния X::iterator и X::const_iterator | время компиляции |
X::size_type | беззнаковый целочисленный тип | - | size_type может представлять любое неотрицательное значение difference_type | время компиляции |
X u; | - |