Windows apps
Collapse the table of content
Expand the table of content
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

unary_negate Class


The new home for Visual Studio documentation is Visual Studio 2017 Documentation on

The latest version of this topic can be found at unary_negate Class.

A template class providing a member function that negates the return value of a specified unary function.

template <class Predicate>  
class unary_negate       : public unary_function<typename Predicate::argument_type, bool>     {    public:    explicit unary_negate(const Predicate& _Func);

    bool operator()(const typename Predicate::argument_type& left) const;



The unary function to be negated.

The operand of the unary function to be negated.

The negation of the unary function.

The template class stores a copy of a unary function object _ Func. It defines its member function operator() as returning !_ Func(left).

The constructor of unary_negate is rarely used directly. The helper function not1 provides an easier way to declare and use the unary_negator adaptor predicate.

// functional_unary_negate.cpp  
// compile with: /EHsc  
#include <vector>  
#include <functional>  
#include <algorithm>  
#include <iostream>  
using namespace std;  
int main()  
    vector<int> v1;  
    vector<int>::iterator Iter;  
    int i;  
    for (i = 0; i <= 7; i++)  
        v1.push_back(5 * i);  
    cout << "The vector v1 = ( ";  
    for (Iter = v1.begin(); Iter != v1.end(); Iter++)  
        cout << *Iter << " ";  
    cout << ")" << endl;  
    vector<int>::iterator::difference_type result1;  
    // Count the elements greater than 10  
    result1 = count_if(v1.begin(), v1.end(), bind2nd(greater<int>(), 10));  
    cout << "The number of elements in v1 greater than 10 is: "  
         << result1 << "." << endl;  
    vector<int>::iterator::difference_type result2;  
    // Use the negator to count the elements less than or equal to 10  
    result2 = count_if(v1.begin(), v1.end(),  
        unary_negate<binder2nd <greater<int> > >(bind2nd(greater<int>(),10)));  
    // The following helper function not1 also works for the above line  
    // not1(bind2nd(greater<int>(), 10)));  
    cout << "The number of elements in v1 not greater than 10 is: "  
         << result2 << "." << endl;  
/* Output:  
The vector v1 = ( 0 5 10 15 20 25 30 35 )  
The number of elements in v1 greater than 10 is: 5.  
The number of elements in v1 not greater than 10 is: 3.  

Header: <functional>

Namespace: std

Thread Safety in the C++ Standard Library
Standard Template Library

© 2017 Microsoft