предикаты
От: Аноним  
Дата: 16.09.07 10:21
Оценка:
Обесните пожалуста разницу между унарным и бинарным предикато.
т.е binary_function и unary_function .что отлизает одно от другого функтора.
З.С
Re: предикаты
От: Sergey Chadov Россия  
Дата: 16.09.07 10:51
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Обесните пожалуста разницу между унарным и бинарным предикато.

А> т.е binary_function и unary_function .что отлизает одно от другого функтора.
А>З.С

??? У одного один параметр, у другого — два.
--
Sergey Chadov

... << RSDN@Home 1.2.0 alpha rev. 685>>
Re: предикаты
От: anonim_44ax  
Дата: 16.09.07 14:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Обесните пожалуста разницу между унарным и бинарным предикато.

А> т.е binary_function и unary_function .что отлизает одно от другого функтора.
А>З.С
По моему, лучше всего эта тема объясняется у Н.Йосютисса "Стандартная библиотека С++", очень рекомендую.
Re[2]: предикаты
От: Кодт Россия  
Дата: 17.09.07 08:10
Оценка:
Здравствуйте, Sergey Chadov, Вы писали:

SC>??? У одного один параметр, у другого — два.


Действительно, вопрос угарный!
Впрочем, помимо формальностей, можно заметить:
— унарные предикаты вводят условия (например, условие фильтрации)
— бинарные предикаты — вводят отношения между элементами (в основном, нужны отношения эквивалентности, т.е. замена оператору ==, и строгого порядка, т.е. замена оператору < )

В операциях поиска, когда каждый элемент контейнера проверяется независимо, нужен одноместный предикат.
Но в операциях поиска над сортированным контейнером (set, map, multiset, multimap, наконец, отсортированный вектор) информация об упорядоченности используется в двоичном поиске, которому нужно отношение порядка — т.е. двуместный предикат.

А вообще, необязательно требовать от предикатов того, чтобы они были унаследованы от std::xxxary_function.
Эти миксины нужны лишь для того, чтоб объявить сигнатуру оператора () — когда функциональный объект участвует в замыкании (bind_1st, bind_2nd).
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.