Изучаю С++. В литературе одну из функций назвали предикатной. Что это может значить, или это такой перевод ?
Ответ
Давайте рассмотрим такую задачу. У нас есть, скажем, вектор целых чисел, и мы хотим вывести на экран только положительные числа.
Как мы это сделаем?
void out(const vector
А если вывести все, больше 5?
void out(const vector
Похоже? Да. Так и тянет объединить их в
void out(const vector
Но что, если мы захотим вывести только четные? Только те, для которых синус положителен?
Все это можно обобщить, например, так:
void out(const vector
Где pred - функция, которая проверяет некоторое условие, предикат. И будут выведены только те числа, для которых функция pred вернет значение true. А как мы ее напишем - наше дело. Например,
bool pred(int i) { return i > 5; }
Вот, по сути, и все. Остальное - функция, или лямбда, шаблон или нет, от скольки аргументов и т.д. и т.п. - не суть важно. Предикативная функция - проверяющая некоторое условие, предикат, для своего(их) аргумента(ов).
Ну и - предикаты весьма широко применяются в алгоритмах стандартной библиотеки.
Комментариев нет:
Отправить комментарий