Чтение онлайн

на главную - закладки

Жанры

РУКОВОДСТВО ПО СТАНДАРТНОЙ БИБЛИОТЕКЕ ШАБЛОНОВ (STL)

Менг Ли

Шрифт:

template ‹class InputIterator, class Distance›

inline void advance(InputIterator& i, Distance n);

template ‹class InputIterator, class Distance›

inline void distance(InputIterator first, InputIterator last, Distance& n);

distance должна быть функцией 3-х параметров, сохраняющей результат в ссылке вместо возвращения результата, потому что тип расстояния не может быть выведен из встроенных итераторных типов, таких как int*.

Функциональные

объекты

Функциональные объекты - это объекты, для которых определён operator. Они важны для эффективного использования библиотеки. В местах, где ожидается передача указателя на функцию алгоритмическому шаблону, интерфейс установлен на приём объекта с определённым operator. Это не только заставляет алгоритмические шаблоны работать с указателями на функции, но также позволяет им работать с произвольными функциональными объектами. Использование функциональных объектов вместе с функциональными шаблонами увеличивает выразительную мощность библиотеки также, как делает результирующий код более эффективным. Например, если мы хотим поэлементно сложить два вектора a и b, содержащие double, и поместить результат в a, мы можем сделать зто так:

transform(a.begin, a.end, b.begin, a.begin, plus‹double›);

Если мы хотим отрицать каждый элемент a, мы можем сделать это так:

transform(a.begin, a.end, a.begin, negate‹double›);

Соответствующие функции вставят сложение и отрицание.

Чтобы позволить адаптерам и другим компонентам манипулировать функциональными объектами, которые используют один или два параметра, требуется, чтобы они соответственно обеспечили определение типов (typedefs) argument_type и result_type для функциональных объектов, которые используют один параметр, и first_argument_type, second_argument_type и result_type для функциональных объектов, которые используют два параметра.

Базовые классы (Base)

Следующие классы предоставляются, чтобы упростить определение типов (typedefs) параметров и результата:

template ‹class Arg, class Result›

struct unary_function {

 typedef Arg argument_type;

 typedef Result result_type;

};

template ‹class Arg1, class Arg2, class Result›

struct binary_function {

 typedef Arg1 first_argument_type;

 typedef Arg2 second_argument_type;

 typedef Result result_type;

};

Арифметические операции (Arithmetic operations)

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

template ‹class T›

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

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

};

template ‹class T›

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

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

};

template ‹class T›

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

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

};

template ‹class T›

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

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

};

template ‹class T›

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› {

Поделиться:
Популярные книги

Вечный. Книга I

Рокотов Алексей
1. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга I

Как притвориться идеальным мужчиной

Арсентьева Александра
Дом и Семья:
образовательная литература
5.17
рейтинг книги
Как притвориться идеальным мужчиной

Тот самый сантехник. Трилогия

Мазур Степан Александрович
Тот самый сантехник
Приключения:
прочие приключения
5.00
рейтинг книги
Тот самый сантехник. Трилогия

Третий. Том 4

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий. Том 4

В погоне за женой, или Как укротить попаданку

Орлова Алёна
Фантастика:
фэнтези
6.62
рейтинг книги
В погоне за женой, или Как укротить попаданку

Дочь Хранителя

Шевченко Ирина
1. Легенды Сопределья
Фантастика:
фэнтези
9.09
рейтинг книги
Дочь Хранителя

Соль этого лета

Рам Янка
1. Самбисты
Любовные романы:
современные любовные романы
6.00
рейтинг книги
Соль этого лета

Измена. Тайный наследник

Лаврова Алиса
1. Тайный наследник
Фантастика:
фэнтези
5.00
рейтинг книги
Измена. Тайный наследник

Он тебя не любит(?)

Тоцка Тала
Любовные романы:
современные любовные романы
7.46
рейтинг книги
Он тебя не любит(?)

Брачный сезон. Сирота

Свободина Виктория
Любовные романы:
любовно-фантастические романы
7.89
рейтинг книги
Брачный сезон. Сирота

Английский язык с У. С. Моэмом. Театр

Франк Илья
Научно-образовательная:
языкознание
5.00
рейтинг книги
Английский язык с У. С. Моэмом. Театр

Попытка возврата. Тетралогия

Конюшевский Владислав Николаевич
Попытка возврата
Фантастика:
альтернативная история
9.26
рейтинг книги
Попытка возврата. Тетралогия

Два лика Ирэн

Ром Полина
Любовные романы:
любовно-фантастические романы
6.08
рейтинг книги
Два лика Ирэн

Идеальный мир для Лекаря 14

Сапфир Олег
14. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 14