Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Une classe de modèle fournissant une fonction membre qui effectue négative la valeur de retour d'une fonction unaire spécifiée.
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;
};
Paramètres
_Func
La fonction unaire à effectuer négative._Left
L'opérande de la fonction unaire à effectuer négative.
Valeur de retour
La négation unaire de la fonction.
Notes
La classe de modèle enregistre une copie d'un unaire d'objet de fonction _Func*.* Il définit sa fonction membre operator() comme retourner le _Func de !(_Left).
Le constructeur d' unary_negate est rarement utilisé directement.La fonction d'assistance not1 offre un moyen plus simple de déclarer et utiliser l'attribut d'adaptateur d' unary_negator .
Exemple
// 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;
}
Configuration requise
en-tête : <functional>
l'espace de noms : DST