C++ configurado para el tipo de datos definido por el usuario

El conjunto STL de C++ es una estructura de datos utilizada para almacenar el valor distinto en orden ascendente o descendente. De forma predeterminada, podemos usarlo para almacenar solo el tipo de datos definido por el sistema (por ejemplo, int, float, double, pair, etc.).

Y si queremos almacenar un tipo de datos definido por el usuario en un conjunto (por ejemplo, estructura), el compilador mostrará un mensaje de error. Esto se debe a la propiedad del conjunto de que el valor guardado en el conjunto debe estar en orden ascendente o descendente. Y mientras lo hace, el compilador no puede comparar dos estructuras (ya que están definidas por el usuario) y esa es la razón por la cual el compilador nos muestra el mensaje de error.
Entonces, para almacenar una estructura en un conjunto, se necesita diseñar alguna función de comparación. La implementación de esto se da a continuación:

Ejemplos:

Input  : 110 102 101 115
Output : 101 102 110 115

Explicación:
aquí insertamos una lista aleatoria en el conjunto, y cuando generamos el conjunto, la lista se ordena en orden ascendente según la función de comparación que hicimos.

Input  : 3  2  34   0 76 
Output : 0  2   3  34 76
// CPP implementation to use 
// user-defined data type in
// structures
#include<bits/stdc++.h>
using namespace std;
  
// Structure definition
struct Test {
    int id;
      
    // This function is used by set to order
    // elements of Test.
    bool operator<(const Test& t) const
    {
        return (this->id < t.id);
    }
};
  
// Driver method
int main()
{
    // put values in each 
    // structure define below.
    Test t1 = { 110 }, t2 = { 102 }, 
         t3 = { 101 }, t4 = { 115 };
  
    // define a set having 
    // structure as its elements.
    set<struct Test> s; 
      
    // insert structure in set
    s.insert(t1); 
    s.insert(t2);
    s.insert(t3);
    s.insert(t4);
      
    // define an iterator to iterate the whole set.
    set<struct Test>::iterator it; 
      
    for (it = s.begin(); it != s.end(); it++)
    {
        // print in ascending order as required.
        cout << (*it).id << endl; 
    }
      
    return 0;
}

Producción:

101
102
110
115

Aplicación:
a) Muy útil al imprimir todas las estructuras distintas en orden ordenado.
b) Insertar nueva estructura en una lista ordenada de estructuras.

Publicación traducida automáticamente

Artículo escrito por sahilshelangia 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 *