对码当歌,猿生几何?

std::not1

From cppreference.com
< cpp‎ | utility‎ | functional
 
 
 
Function objects


Function wrappers
(C++11)
(C++11)
(C++17)
Bind
(C++11)
Reference wrappers
(C++11)(C++11)
Operator wrappers
Negators
not1
(deprecated)
(deprecated)

(deprecated)
(deprecated)
Searchers
Old binders and adaptors
(until C++17)
(until C++17)
(until C++17)
(until C++17)
(until C++17)(until C++17)(until C++17)(until C++17)
(until C++17)(until C++17)
(until C++17)(until C++17)

(until C++17)
(until C++17)(until C++17)(until C++17)(until C++17)
 
Defined in header <functional>
template< class Predicate >
std::unary_negate<Predicate> not1(const Predicate& pred);
(until C++14)
template< class Predicate >
constexpr std::unary_negate<Predicate> not1(const Predicate& pred);
(since C++14)
(deprecated in C++17)

not1 is a helper function to create a function object that returns the complement of the unary predicate function passed. The function object created is of type std::unary_negate<Predicate>.

The unary predicate type must define a member type, argument_type, that is convertible to the predicate's parameter type. The unary function objects obtained from std::ref, std::cref, std::negate, std::logical_not, std::mem_fn, std::function, std::hash, or from another call to std::not1 have this type defined, as are function objects derived from the deprecated std::unary_function.

Parameters

pred - unary predicate

Return value

std::not1 returns an object of type std::unary_negate<Predicate>, constructed with pred.

Exceptions

None.

Example

#include <algorithm>
#include <numeric>
#include <iterator>
#include <functional>
#include <iostream>
#include <vector>
 
struct LessThan7 : std::unary_function<int, bool>
{
    bool operator()(int i) const { return i < 7; }
};
 
int main()
{
    std::vector<int> v(10);
    std::iota(begin(v), end(v), 0);
 
    std::cout << std::count_if(begin(v), end(v), std::not1(LessThan7())) << "\n";
 
    //same as above, but use a lambda function
    std::function<int(int)> less_than_9 = [](int x){ return x < 9; };
    std::cout << std::count_if(begin(v), end(v), std::not1(less_than_9)) << "\n";
}

Output:

3
1

See also

(C++17)
Creates a function object that returns the complement of the result of the function object it holds
(function template)
(deprecated)
wrapper function object returning the complement of the unary predicate it holds
(class template)
(C++11)
wraps callable object of any type with specified function call signature
(class template)
(deprecated)
constructs custom std::binary_negate object
(function template)
(until C++17)
creates an adaptor-compatible function object wrapper from a pointer to function
(function template)
(until C++17)
adaptor-compatible unary function base class
(class template)