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 принимается за эту проблему, обеспечивая стандартный набор требований для
Требования распределителей (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 |