函数对象的函数适配器

函数对象的函数适配器
标准库还提供了一组函数适配器用来特殊化或者扩展一元和二元函数对象适配器是
一种特殊的类它被分成下面两类
1 绑定器binder binder 通过把二元函数对象的一个实参绑定到一个特殊的值上
将其转换成一元函数对象例如为了计数一个容器中小于或等于10 的元素的个数我们可
能会向count_if()传递一个less_equal 函数对象以及一个被绑定为10 的实参在下一节中
我们将了解怎样实现这种方法
2 取反器negator negator 是一个将函数对象的值翻转的函数适配器例如为了
计数一个容器中所有大于10 的元素的个数我们可以向count_if()传递less_equal 函数对象的
negator 该函数对象有一个实参被绑定为10 当然在这种情况下直接传递greater 对象
的binder 并把一个实参绑定为10 更为简洁明了
C++标准库提供了两种预定义的binder 适配器bind1st 和bind2nd 正如你所预料的
bind1st 把值绑定到二元函数对象的第一个实参上bind2nd 把值绑定在第二个实参上例如
为了计数容器中所有小于或等于10 的元素的个数我们可以这样向count_if()传递
count_if( vec.begin(), vec.end(),
bind2nd( less_equal(), 10 ));
标准库提供了两个预定义的negator 适配器not1 和not2 同样正如你所料想的not1
翻转一元预定义函数对象的真值而not2 翻转二元谓词函数的真值为了取反less_equal 函
数对象的绑定我们可以这样写
count_if( vec.begin(), vec.end(),
not1( bind2nd( less_equal(), 10 )));

你可能感兴趣的:(less,c++,扩展,C/C++)