Negators man page on OpenIndiana
[printable version]
Negators(3C++) - Negators(3C++)
Standard C++ Library Copyright 1998, Rogue Wave Software, Inc.
NAME
Negators
- Function adaptors and function objects used to reverse the sense of
predicate function objects.
SYNOPSIS
#include <functional>
template <class Predicate>
class unary_negate;
template <class Predicate>
unary_negate<Predicate> not1(const Predicate&);
template <class Predicate>
class binary_negate;
template <class Predicate>
binary_negate<Predicate> not2(const Predicate&);
DESCRIPTION
Negators not1 and not2 are functions that take predicate function
objects as arguments and return predicate function objects with the
opposite sense. Negators work only with function objects defined as
subclasses of the classes unary_function and binary_function. not1
accepts and returns unary predicate function objects. not2 accepts and
returns binary predicate function objects.
unary_negate and binary_negate are function object classes that include
return types for the negators, not1 and not2.
INTERFACE
template <class Predicate>
class unary_negate
: public unary_function
<typename Predicate::argument_type, bool> {
public:
explicit unary_negate (const Predicate&);
bool operator() (const argument_type&) const;
};
template<class Predicate>
unary_negate <Predicate> not1 (const Predicate&);
template<class Predicate>
class binary_negate
: public binary_function
<typename Predicate::first_argument_type,
typename Predicate::second_argument_type, bool>
{
public:
explicit binary_negate (const Predicate&);
bool operator() (const first_argument_type&,
const second_argument_type&) const;
};
template <class Predicate>
binary_negate<Predicate> not2 (const Predicate&);
EXAMPLE
//
// negator.cpp
//
#include<functional>
#include<algorithm>
#include <iostream>
using namespace std;
//Create a new predicate from unary_function
template<class Arg>
class is_odd : public unary_function<Arg, bool>
{
public:
bool operator()(const Arg& arg1) const
{
return (arg1 % 2 ? true : false);
}
};
int main()
{
less<int> less_func;
// Use not2 on less
cout << (less_func(1,4) ? "TRUE" : "FALSE") << endl;
cout << (less_func(4,1) ? "TRUE" : "FALSE") << endl;
cout << (not2(less<int>())(1,4) ? "TRUE" : "FALSE")
<< endl;
cout << (not2(less<int>())(4,1) ? "TRUE" : "FALSE")
<< endl;
//Create an instance of our predicate
is_odd<int> odd;
// Use not1 on our user defined predicate
cout << (odd(1) ? "TRUE" : "FALSE") << endl;
cout << (odd(4) ? "TRUE" : "FALSE") << endl;
cout << (not1(odd)(1) ? "TRUE" : "FALSE") << endl;
cout << (not1(odd)(4) ? "TRUE" : "FALSE") << endl;
return 0;
}
Program Output
TRUE
FALSE
FALSE
TRUE
TRUE
FALSE
FALSE
TRUE
SEE ALSO
Algorithms, binary_function, Function_Objects, unary_function
Rogue Wave Software 02 Apr 1998 Negators(3C++)
[top]
List of man pages available for OpenIndiana
Copyright (c) for man pages and the logo by the respective OS vendor.
For those who want to learn more, the polarhome community provides shell access and support.
[legal]
[privacy]
[GNU]
[policy]
[cookies]
[netiquette]
[sponsors]
[FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
|
Vote for polarhome
|