El std::greater es un objeto funcional que se utiliza para realizar comparaciones. Se define como una clase de objeto Función para la comparación mayor que la desigualdad. Esto se puede utilizar para cambiar la funcionalidad de la función dada. Esto también se puede usar con varios algoritmos estándar, como ordenar , cola de prioridad , etc.
Archivo de cabecera:
#include <functional.h>
Clase de plantilla:
template <class T> struct greater;
Parámetro: T es un tipo de los argumentos a comparar por la llamada funcional.
Valor devuelto: Devuelve una variable booleana como se muestra a continuación:
- Verdadero: si dos elementos dicen (a y b) tales que a > b.
- Falso: si a < b.
A continuación se muestra la ilustración de std::greater en C++:
Programa 1:
// C++ program to illustrate std::greater #include <algorithm> #include <functional> #include <iostream> using namespace std; // Function to print array elements void printArray(int arr[], int n) { for (int i = 0; i < n; i++) { cout << arr[i] << ' '; } } // Driver Code int main() { int arr[] = { 60, 10, 80, 40, 30, 20, 50, 90, 70 }; int n = sizeof(arr) / sizeof(arr[0]); // To sort the array in decreasing order // use greater <int>() as an third arguments sort(arr, arr + 9, greater<int>()); // Print array elements printArray(arr, n); return 0; }
Producción:
90 80 70 60 50 40 30 20 10
Programa 2:
// C++ program to illustrate std::greater #include <functional> #include <iostream> #include <queue> using namespace std; // Function to print elements of priority_queue void showpq(priority_queue<int, vector<int>, greater<int> > pq) { priority_queue<int, vector<int>, greater<int> > g; g = pq; // While priority_queue is not empty while (!g.empty()) { // Print the top element cout << g.top() << ' '; // Pop the top element g.pop(); } } // Driver Code int main() { // priority_queue use to implement // Max Heap, but using function // greater <int> () it implements // Min Heap priority_queue<int, vector<int>, greater<int> > gquiz; // Inserting Elements gquiz.push(10); gquiz.push(30); gquiz.push(20); gquiz.push(5); gquiz.push(1); // Print elements of priority queue cout << "The priority queue gquiz is : "; showpq(gquiz); return 0; }
Producción:
The priority queue gquiz is : 1 5 10 20 30