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_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。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com

