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