Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Предикаты\Функторы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ На чем пишут Инсталер к програмам?? http://www.cyberforum.ru/cpp/thread44849.html
стало интиресно как работают инсталятори, помогмите розобратся... 1. на каком ПО их пишут? 2. какие требования к ОС 3. как программы заносятся в реестр, и т.д.
C++ Консольная графика Доброго времени суток!!! Как под DOS рисовать примитивные обьекты линии, квадраты, круги? Для Turbo C++, Но если возможно то для C++ Builder. Заранее спасибо... http://www.cyberforum.ru/cpp/thread44674.html
Пакет C++
Здравствуйте, нужно мне добиться программки по типу сниффера. Почитв инфу по этому поводу нашел сниффер входящих пакетов и возник вопрос. В примере пакет ловят обычным recv() и преобразуют в...
C++ работа с shared_array
Добрый день. Суть вопроса такова: как сделать чтоб shared_array удалялся при уничтожении класса, а не при выходе из конструктора\метода. Собсно класс: Объявляю в public указатель на массив....
C++ *.h http://www.cyberforum.ru/cpp/thread44274.html
Зачем эти файлы, и как с ними работать???
C++ Выбор компилятора под windows Здавствуйте,хотел узнать ваше мнение по поводу выбора компилятора языка C++(бесплатного) под ОС Windows XP. Visual c++ не предлагать, причина:не наличие интернета,а как я помню при установке... подробнее

Показать сообщение отдельно
TGrey[WoLf]
39 / 39 / 1
Регистрация: 14.09.2008
Сообщений: 685

Предикаты\Функторы - C++

24.07.2009, 15:32. Просмотров 11968. Ответов 6
Метки (Все метки)

Здравствуйте, взялся за прочтение алгоритмов STL и наткнулся на такой вопрос, что же такое Предикаты\Функторы. Определения и примеры я просмотрел, но толком не понял.

А именно возникает следующие вопросы:
1)Почему если создается класс, то там перегружается именно ()
2)Как понять сколько параметров будут переданы?
Вот к примеру код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
class ManLess
{
public:
bool operator ()(Man& man1, Man& man2)
{
if (man1.GetAge () < man2.GetAge ())
{
return false;
}
else
{
return true;
}
};
};
 
bool ManOlderThan23(Man& man)
{
if (man.GetAge () > 23)
{
return true;
}
else
{
return false;
}
};
 
class ManOlderThan
{
int m_age;
public:
ManOlderThan (int age)
{
m_age = age;
};
bool operator ()(Man& man)
{
if (man.GetAge () > m_age)
{
return true;
}
else
{
return false;
}
};
};
 
....
 
find_if (programmers.begin (), programmers.end (),ManOlderThan23);
find_if (programmers.begin (), programmers.end (),ManOlderThan (23));
sort (programmers.begin (), programmers.end (), ManLess ());
Как тут понять почему в первых случаях проверяется 1 Man, а в 3 случае 2 Man.

3)От чего зависит будет ли предикат функцией или классом?


-------------------
Если учесть что алгоритм принимает унарный или бинарный предикат, тогда становится понятнее.
Есть ли где описание, какие предикаты принимает тот или иной алгоритм?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru