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_type
和second_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。