SGI

unary_negate<AdaptablePredicate>

类别:函子,适配器 组件类型:类型

描述

Unary_negate是一个函数对象适配器:它是一个可适配谓词,表示另一个可适配谓词的逻辑否定。也就是说:如果f是类unary_negate<AdaptablePredicate>的对象,那么存在一个类pred的对象AdaptablePredicate使得f(x)总是返回与!pred(x)相同的值。[1] 很少有理由直接构造unary_negate;使用辅助函数not1.

几乎总是更容易。

示例
list<int> L;
...
list<int>::iterator in_range = 
     find_if(L.begin(), L.end(),
             not1(compose2(logical_and<bool>(),
                           bind2nd(greater_equal<int>(), 1),
                           bind2nd(less_equal<int>(), 10))));
assert(in_range == L.end() || !(*in_range >= 1 && *in_range <= 10));

在列表中找到第一个不在 1 到 10 范围内的元素。

定义

在标准头文件 functional 和非标准向后兼容头文件 function.h 中定义。

模板参数 描述 参数
AdaptablePredicate 默认值unary_negate此函数对象的类型,  

是其逻辑否定的对象。

模型

可适配谓词

AdaptablePredicate类型要求

必须是可适配谓词的模型。

公有基类

unary_function<AdaptablePredicate::argument_type, bool>

成员 成员 描述
定义位置 argument_type 可适配一元函数参数的类型
AdaptablePredicate::argument_type argument_type result_type结果的类型
bool bool operator()(argument_type) 一元函数
unary_negate(const AdaptablePredicate& pred)
unary_negate 函数调用运算符。
template <class AdaptablePredicate>
unary_negate<AdaptablePredicate>
not1(const AdaptablePredicate& pred);
unary_negate 函数调用运算符。

参见下文。

新成员unary_negate.
成员 描述
unary_negate(const AdaptablePredicate& pred)
这些成员未在可适配谓词要求中定义,而是特定于unary_negate<AdaptablePredicate>构造函数。创建一个pred.
template <class AdaptablePredicate>
unary_negate<AdaptablePredicate>
not1(const AdaptablePredicate& pred);
其底层谓词为如果pAdaptablePredicate的类型为那么not1(p)等价于unary_negate<AdaptablePredicate>(p)

,但更方便。这是一个全局函数,而不是成员函数。

注释unary_negate[1] 严格来说,是冗余的。它可以使用函数对象logical_not和适配器.

unary_compose

构造。另请参见, 和适配器, 函数对象概述可适配谓词谓词
[Silicon Surf] [STL Home]
binary_negate binary_compose