std::unary_negate()是包装函数对象,返回其持有的一元谓词的补码。包装函数是软件库或计算机程序中的子例程,其主要目的是在很少或不需要额外计算的情况下调用第二个子例程或系统调用。通常使用函数std::not1()构造unary_negate类型的对象。
头文件:
#include <functional>
用法:
std::unary_negate<class T> variable_name(Object of class T);
参数:函数std::unary_negate()接受谓词函数对象作为参数,并返回通过调用谓词函数生成的结果的逻辑补码。
返回值:它通过调用谓词函数来返回结果的逻辑补码。
下面是说明函数std::unary_negate()的程序:
程序1:
// C++ program to illustrate
// std::unary_negate to find number
// greater than equals 4 in arr[]
#include <algorithm>
#include <functional>
#include <iostream>
#include <vector>
using namespace std;
// Predicate function to find the
// count of number greater than or
// equals to 4 in array arr[]
struct gfg:unary_function<int, bool> {
// Function returns true if any
// element is less than 4
bool operator()(int i)
const
{
return i < 4;
}
};
// Driver Code
int main()
{
// Declare vector
vector<int> arr;
// Insert value from 1-10 in arr
for (int i = 1; i <= 10; ++i) {
arr.push_back(i);
}
// Use unary_negate() to find the
// count of number greater than 4
unary_negate<gfg> func((gfg()));
// Print the count of number using
// function count_if()
cout << count_if(arr.begin(),
arr.end(), func);
return 0;
}
输出:
7
说明:在上面的程序中,arrar arr []的元素从1到10,大于等于4的元素数为7。
程序2:
// C++ program to illustrate
// std::unary_negate to find number
// greater than equals 4 in arr[]
#include <algorithm>
#include <functional>
#include <iostream>
#include <vector>
using namespace std;
// Given Structure
struct IsOdd_class {
// Predicate of this structure
bool operator()(const int& x)
const
{
return x % 2 == 1;
}
typedef int argument_type;
} IsOdd_object;
// Driver Code
int main()
{
// Use unary_negate function to
// to find the compliment of
// predicate declare in structure
// IsOdd_class
unary_negate<IsOdd_class>
IsEven_object(
IsOdd_object);
// Given array
int arr[] = { 1, 1, 3, 9, 5 };
int cx;
// count with respect to predicate
// generated by unary_negate()
cx = count_if(arr, arr + 5, IsEven_object);
// Print the count
cout << "There are "
<< cx
<< " elements with even values!"
<< endl;
return 0;
}
输出:
There are 0 elements with even values!
参考: http://www.cplusplus.com/reference/functional/unary_negate/
相关用法
- C++ std::less用法及代码示例
- C++ cin get()用法及代码示例
- C++ iswprint()用法及代码示例
- C++ std::is_copy_constructible用法及代码示例
- C++ iswgraph()用法及代码示例
- C++ std::bit_xor用法及代码示例
- C++ std::remove_const用法及代码示例
- C++ std::is_trivially_assignable用法及代码示例
- C++ basic_istream::get()用法及代码示例
- C++ std::has_virtual_destructor用法及代码示例
- C++ cauchy_distribution a()用法及代码示例
- C++ ratio_equal()用法及代码示例
- C++ std::to_address用法及代码示例
- C++ std::is_nothrow_destructible用法及代码示例
- C++ std::remove_volatile用法及代码示例
- C++ std::is_trivially_move_assignable用法及代码示例
注:本文由纯净天空筛选整理自_anupam_kumar_krishnan_大神的英文原创作品 std::unary_negate() in C++ with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。