std::unary_negate() en C++ con ejemplos

El std::unary_negate() es un objeto de función contenedora que devuelve el complemento del predicado unario que contiene. Una función contenedora es una subrutina en una biblioteca de software o un programa de computadora cuyo objetivo principal es llamar a una segunda subrutina o una llamada al sistema con poco o ningún cálculo adicional. Un objeto de tipo unary_negate generalmente se construye usando la función std::not1() .
Archivo de cabecera: 
 

#include <functional>

Sintaxis: 
 

std::unary_negate<class T>
    variable_name(Object of class T);

Parámetros: la función std::unary_negate() acepta el objeto de función de predicado como parámetro y devuelve el complemento lógico del resultado generado al llamar a la función de predicado.
Valor devuelto: Devuelve el complemento lógico del resultado llamando a la función de predicado.
A continuación se muestra el programa para ilustrar la función std::unary_negate() :
Programa 1:
 

CPP

// 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;
}
Producción: 

7

 

Explicación: En el programa anterior, la array arr[] tiene elementos del 1 al 10 y el número de elementos que es mayor que igual a 4 es 7.
Programa 2:
 

CPP

// 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;
}
Producción: 

There are 0 elements with even values!

 

Referencia: http://www.cplusplus.com/reference/funcional/unary_negate/
 

Publicación traducida automáticamente

Artículo escrito por _anupam_kumar_krishnan_ y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *