当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ std::unary_negate()用法及代码示例


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/




相关用法


注:本文由纯净天空筛选整理自_anupam_kumar_krishnan_大神的英文原创作品 std::unary_negate() in C++ with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。