Top.Mail.Ru
Ответы

В чем разница между функтором и предикатом? С++

За исключением того, что предикат возвращает тип bool. Ранее считал, что это собственно аналогичные вещи, но в определении нашел, что предикат это подмножество функторов... о каком именно множестве идет речь я так и не понял...?

По дате
По рейтингу
Аватар пользователя
Новичок
7лет

У тебя в вопросе написано одно и то же разными словами. Тебе это непонятно, потому что не изучал математику. Но я не совсем согласен.
Предикат - это что-то типа функции, возвращающее bool. В С++ это может быть функция или функтор (или лямбда, что то же самое).
Функтор (функциональный объект) - это объект, который можно вызывать как функцию.

Прочитал в Википеди, что предикат обязательно должен иметь хотя бы одни параметр.

Аватар пользователя
Мыслитель
7лет

В программировании предикат - это определённая функция, с помощью которой некие элементы являются либо "истинными", либо "ложными".
Предикат в программировании — выражение, использующее одну или более величину с результатом булева типа.
>предикат это подмножество функторов
Не видел такого определения.
Функтор - экземпляр класса или структуры, перегруженной оператором.
Предикатом может быть функция, функтор, анонимный метод.
>В чем разница между функтором и предикатом?
Предикат это ячейка куда вставлять, а функтор это то, что помещается в эту ячейку.

Аватар пользователя
Мудрец
7лет

функтор "движущиеся тр. ср-во".
на входе предикат "2-колеса" -- на выходе "велосипед"
-//- "4 колеса" -- "автомобиль"
- "2 крыла" -- "голубь"
ну примитивно, но как-то так получается

Аватар пользователя
3мес

функтор это как функция а предикат просто возвращает правда или ложь так что предикат это функтор но не наоборот