在线文档教程
C++
应用 | Utilities

std::not2

性病:不是2

Defined in header
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...

例外

没有。

二次

#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'; }

二次

产出:

二次

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)

© cppreference.com

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

http://en.cppreference.com/w/cpp/实用程序/Functional/NOT 2