Пояснение работы этих функций bind1st и bind2nd. Они нужны тогда, когда мы из бинарной функции должны получить унарную. Напомню что унарная эта та функция, которая получает один аргумент, а бинарная два. При использовании стандартной библиотеки C++, в прочем если интересно, то ...
При юзании STL мы иногда должны уметь из бинарной получить унарную именно для этой цели нужны эти функциональные адаптеры. К примеру при использовании std::remove_if может потребоваться вызов функции сравнения на какое-то значение и если "да", то удалять.
Чтобы четче понять разницу между этими функциями можно взглянуть на:
Нашел тут. Автору комментария респект за этот пример!
При юзании STL мы иногда должны уметь из бинарной получить унарную именно для этой цели нужны эти функциональные адаптеры. К примеру при использовании std::remove_if может потребоваться вызов функции сравнения на какое-то значение и если "да", то удалять.
Чтобы четче понять разницу между этими функциями можно взглянуть на:
bind1st
binds the first parameter of plus()
functor, and bind2nd
binds the second parameter. In case of plus
, it doesn't make any difference, as 10+20
and 20+10
are same.
But if you do that with
minus
, it would make difference, as 10-20
and 20-10
aren't same. Just try doing that.
Illustration:
int main () {
auto p1 = bind1st(plus (),10);
auto p2 = bind2nd(plus (),10);
cout << p1(20) << endl;
cout << p2(20) << endl;
auto m1 = bind1st(minus (),10);
auto m2 = bind2nd(minus (),10);
cout << m1(20) << endl;
cout << m2(20) << endl;
return 0;
}
Output:
30
30
-10
10
Нашел тут. Автору комментария респект за этот пример!
Комментариев нет:
Отправить комментарий