struct modulus: binary_function‹T, T, T› {

 Т operator()(const T& x, const T& y) const {return x % y;}

};

template ‹class T›

struct negate: unary_function‹T, T› {

 Т operator()(const T& x) const {return -x;}

};

Сравнения (Comparisons)

Библиотека обеспечивает базовые классы функциональных объектов для всех операторов сравнения языка

template ‹class T›

struct equal_to: binary_function‹T, T, bool› {

 bool operator()(const T& x, const T& y) const {return x == y;}

};

template ‹class T›

struct not_equal_to: binary_function‹T, T, bool› {

 bool operator()(const T& x, const T& y) const {return x!= y;}

};

template ‹class T›

struct greater: binary_function‹T, T, bool› {

 bool operator()(const T& x, const T& y) const {return x › y;}

};

template ‹class T›

struct less: binary_function‹T, T, bool› {

 bool operator()(const T& x, const T& y) const {return x ‹ y;}

};

template ‹class T›

struct greater_equal: binary_function‹T, T, bool› {

 bool operator()(const T& x, const T& y) const {return x ›= y;}

};

template ‹class T›

struct less_equal: binary_function‹T, T, bool› {

 bool operator()(const T& x, const T& y) const {return x ‹= y;}

};

Логические операции (Logical operations)

template ‹class T›

struct logical_and: binary_function‹T, T, bool› {

 bool operator()(const T& x, const T& y) const {return x&& y;}

};

template ‹class T›

struct logical_or: binary_function‹T, T, bool› {

 bool operator()(const T& x, const T& y) const {return x || y;}

};

template ‹class T›

struct logical_not: unary_function‹T, bool› {

 bool operator()(const T& x) const {return!x;}

};

Распределители

Одна из общих проблем в мобильности - это способность инкапсулировать информацию относительно модели памяти. Эта информация включает типы указателей, тип их разности, тип размера объектов в этой модели памяти, также как её примитивы выделения и освобождения памяти.

STL принимается за эту проблему, обеспечивая стандартный набор требований для распределителей (allocators), являющихся объектами, которые инкапсулируют эту информацию. Все контейнеры в STL параметризованы в терминах распределителей. Это значительно упрощает задачу взаимодействия с многочисленными моделями памяти.

Требования распределителей (Allocator requirements)

В следующей таблице мы предполагаем, что X - класс распределителей для объектов типа T, a - значение X, n имеет тип X::size_type, p имеет тип X::pointer, r имеет тип X::reference и s имеет тип X::const_reference.

Все операции c распределителями, как ожидается, сводятся к постоянному времени.

Таблица 7. Требования распределителей

выражение возвращаемый тип утверждение/примечание состояние до/после
X::value_type Т
X::reference леводопустимое значение T (lvalue of T)
X::const_reference const lvalue of T
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату