首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::not2

Defined in header <functional>

template< class Predicate > std::binary_negate<Predicate> not2(const Predicate& pred);

(until C++14)

template< class Predicate > constexpr std::binary_negate<Predicate> not2(const Predicate& pred);

(since C++14) (deprecated in C++17)

not2是一个助手函数,用于创建一个函数对象,该对象返回传递的二进制谓词函数的补码。创建的函数对象类型为std::binary_negate<Predicate>...

二进制谓词类型必须定义两个成员类型,first_argument_typesecond_argument_type可转换为谓词%27s参数类型的。从std::owner_less,,,std::ref,,,std::cref,,,std::plus,,,std::minus,,,std::multiplies,,,std::divides,,,std::modulus,,,std::equal_to,,,std::not_equal_to,,,std::greater,,,std::less,,,std::greater_equal,,,std::less_equal,,,std::logical_not,,,std::logical_or,,,std::bit_and,,,std::bit_or,,,std::bit_xor,,,std::mem_fn,,,std::map::value_comp,,,std::multimap::value_comp,,,std::function,或者从另一个电话到std::not2定义这些类型,就像从已弃用的函数对象派生的函数对象一样。std::binary_function...

参数

pred

-

binary predicate

返回值

std::not2返回类型为std::binary_negate<Predicate>,构造为pred...

例外

没有。

二次

代码语言:javascript
复制
#include <algorithm>
#include <functional>
#include <iostream>
#include <vector>
 
struct old_same : std::binary_function<int, int, bool>
{
    bool operator()(int a, int b) const { return a == b; }
};
 
struct new_same
{
    bool operator()(int a, int b) const { return a == b; }
};
 
bool same_fn(int a, int b)
{
    return a == b;
}
 
 
int main()
{
    std::vector<int> v1{0, 1, 2};
    std::vector<int> v2{2, 1, 0};
    std::vector<bool> v3(v1.size());
 
    std::cout << "negating a binary_function:\n";
    std::transform(v1.begin(), v1.end(), v2.begin(), v3.begin(),
                   std::not2(old_same()));
 
    std::cout << std::boolalpha;
    for (std::size_t i = 0; i < v1.size(); ++i)
        std::cout << v1[i] << ' ' << v2[i] << ' ' << v3[i] << '\n';
 
    std::cout << "negating a standard functor:\n";
    std::transform(v1.begin(), v1.end(), v2.begin(), v3.begin(),
                   std::not2(std::equal_to<int>()));
 
    for (std::size_t i = 0; i < v1.size(); ++i)
        std::cout << v1[i] << ' ' << v2[i] << ' ' << v3[i] << '\n';
 
    std::cout << "negating a std::function:\n";
    std::transform(v1.begin(), v1.end(), v2.begin(), v3.begin(),
                   std::not2(std::function<bool(int,int)>(new_same())));
 
    for (std::size_t i = 0; i < v1.size(); ++i)
        std::cout << v1[i] << ' ' << v2[i] << ' ' << v3[i] << '\n';
 
    std::cout << "negating a std::reference_wrapper:\n";
    std::transform(v1.begin(), v1.end(), v2.begin(), v3.begin(),
                   std::not2(std::ref(same_fn)));
 
    for (std::size_t i = 0; i < v1.size(); ++i)
        std::cout << v1[i] << ' ' << v2[i] << ' ' << v3[i] << '\n';
 
}

二次

产出:

二次

代码语言:javascript
复制
negating a binary_function:
0 2 true
1 1 false
2 0 true
negating a standard functor:
0 2 true
1 1 false
2 0 true
negating a std::function:
0 2 true
1 1 false
2 0 true
negating a std::reference_wrapper:
0 2 true
1 1 false
2 0 true

二次

另见

not_fn (C++17)

Creates a function object that returns the complement of the result of the function object it holds (function template)

binary_negate (deprecated)

wrapper function object returning the complement of the binary predicate it holds (class template)

function (C++11)

wraps callable object of any type with specified function call signature (class template)

not1 (deprecated)

constructs custom std::unary_negate object (function template)

ptr_fun (until C++17)

creates an adaptor-compatible function object wrapper from a pointer to function (function template)

binary_function (until C++17)

adaptor-compatible binary function base class (class template)

代码语言:txt
复制
 © cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券