Примитивы, определённые в библиотеке STL
В STL определены некоторые вспомогательные структуры и функции, облегчающие разработку приложений.
Например, чтобы избежать избыточности определений операторов сравнения, библиотека содержит следующее (заголовочный файл utility, пространство имен rel_ops):
Как видно, для некоторого класса достаточно определить операторы < и ==, остальные операторы будут построены автоматически на их основе.
Другим полезным определением в стандартной библиотеке является упорядоченная пара некоторых переменных различного типа. Выглядит это определение следующим образом:
Для упрощения создания упорядоченной пары введена функция make_pair, которая выглядит следующим образом:
В стандартной библиотеке большинство алгоритмов оперируют функциональными объектами. Базовыми классами для этих объектов являются классы unary_function и binary_function (объявлены в заголовочном файле functional):
Рекомендуется и пользовательские функциональные объекты наследовать от этих классов. На основе данных структур в STL объявлены некоторые полезные функторы:
Арифметические операции: | Описание |
---|---|
plus | шаблонный функтор сложения |
minus | шаблонный функтор вычитания |
multiplies | шаблонный функтор умножения |
divides | шаблонный функтор деления |
modulus | шаблонный функтор вычисления модуля |
Принципиальная реализация данных функторов подобна реализации функтора plus (с )
Операции сравнения: | Описание |
---|---|
equal_to | шаблонный функтор сравнения |
not_equal_to | шаблонный функтор неравенства |
greater | шаблонный функтор, оператор > |
less | шаблонный функтор, оператор < |
greater_equal | шаблонный функтор, оператор >= |
less_equal | шаблонный функтор, оператор <= |
Логические операции: | |
---|---|
logical_and | шаблонный функтор, логическое и |
logical_or | шаблонный функтор, логическое или |
logical_not | шаблонный функтор, логическое отрицание |
Эти операции могут использоваться совместно с алгоритмами, изменяющими последовательности.
Адапторы
Адапторы являются специальными функторами, которые "изменяют" (на самом деле создают новый тип) существующие функторы. Например, подшивки позволяют преобразовать бинарный функтор в унарный, фиксируя в качестве одного из параметров некоторое значение.
Отрицатели | |
---|---|
not1 | возвращает отрицание унарного функтора |
not2 | возвращает отрицание бинарного функтора |
Подшивки | |
---|---|
bind1st | "подшивает" к функтору некоторое значение первым параметром |
bind2nd | "подшивает" к функтору некоторое значение вторым параметром |
Last updated