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