Los conjuntos son un tipo de contenedor asociativo en el que cada elemento tiene que ser único porque el valor del elemento lo identifica. Los valores se almacenan en un orden específico.
Sintaxis:
set<tipo de datos> setname;
Aquí,
Datatype: Set puede tomar cualquier tipo de datos dependiendo de los valores, por ejemplo, int, char, float, etc.
Este artículo se centra en discutir todos los métodos que se pueden usar para iterar sobre un conjunto en C++ . Los siguientes métodos serán discutidos en este artículo:
- Iterar sobre un conjunto usando un iterador .
- Iterar sobre un conjunto en dirección hacia atrás usando reverse_iterator .
- Iterar sobre un conjunto usando un bucle for basado en rango .
- Iterar sobre un conjunto usando for_each loop .
Comencemos discutiendo cada uno de estos métodos en detalle.
Iterando sobre un conjunto usando iterador.
En este método, se crea e inicializa un iterador itr usando la función begin() que apuntará al primer elemento, y después de cada iteración, itr apunta al siguiente elemento en un conjunto y continuará iterando hasta que alcance el final de el conjunto.
En este enfoque se utilizarán los siguientes métodos:
- begin() : Devuelve un iterador al primer elemento del conjunto.
- end() : Devuelve un iterador al elemento teórico que sigue al último elemento del conjunto.
A continuación se muestra el programa C++ para implementar el enfoque anterior:
C++
// C++ program to implement // the above approach #include<bits/stdc++.h> using namespace std; // Function to display elements // of a set void display(set<int> s) { set<int>::iterator itr; // Displaying set elements for (itr = s.begin(); itr != s.end(); itr++) { cout << *itr << " "; } } // Driver code int main() { // Empty set container set<int> s; // Insert elements in random order s.insert(10); s.insert(20); s.insert(30); s.insert(40); s.insert(50); // Invoking function display() // to display elements of set display(s); return 0; }
Producción:
10 20 30 40 50
Iterar sobre un conjunto en dirección hacia atrás usando reverse_iterator
En este enfoque, se crea e inicializa un itr de iterador inverso usando la función rbegin() que apuntará al último elemento de un conjunto, y después de cada iteración, itr apunta al siguiente elemento en una dirección hacia atrás en un conjunto y continuará iterar hasta llegar al principio del conjunto.
Las siguientes funciones se utilizan en este enfoque:
- set::rbegin(): es una función integrada en C++ STL que devuelve un iterador inverso que apunta al último elemento del contenedor.
- set::rend(): es una función incorporada en C++ STL que devuelve un iterador inverso que apunta al elemento teórico justo antes del primer elemento en el contenedor del conjunto.
A continuación se muestra el programa C++ para implementar el enfoque anterior:
C++
// C++ program to implement // the above approach #include<bits/stdc++.h> using namespace std; // Function to display elements // of the set void display(set<int> s) { set<int>::reverse_iterator itr; // Displaying elements of the // set for (itr = s.rbegin(); itr != s.rend(); itr++) { cout << *itr << " "; } } // Driver code int main() { // Empty set container set<int> s; // Insert elements in random order s.insert(10); s.insert(20); s.insert(30); s.insert(40); s.insert(50); // Invoking display() function display(s); return 0; }
Producción:
50 40 30 20 10
Iterar sobre un conjunto usando un bucle for basado en rango
En este método, se usará un bucle for basado en rango para iterar sobre todos los elementos en un conjunto en una dirección hacia adelante.
Sintaxis:
para (rango_declaración: rango_expresión)
loop_statement
Parámetros:
range_declaration :
Una declaración de una variable nombrada, cuyo tipo es el tipo del elemento de la secuencia representada por range_expression, o una referencia a ese tipo. A menudo utiliza el especificador automático para la deducción automática de tipos.range_expression:
cualquier expresión que represente una secuencia adecuada o una lista de inicio entre llaves.loop_statement:
cualquier declaración, generalmente una declaración compuesta, que es el cuerpo del bucle.
A continuación se muestra el programa C++ para implementar el enfoque anterior:
C++
// C++ program to implement // the above approach #include<bits/stdc++.h> using namespace std; // Function to display elements // of the set void display(set<int> s) { // Printing the elements of // the set for (auto itr : s) { cout << itr << " "; } } // Driver code int main() { // Empty set container set<int> s; // Insert elements in random order s.insert(10); s.insert(20); s.insert(30); s.insert(40); s.insert(50); // Invoking display() function display(s); return 0; }
Producción:
10 20 30 40 50
Iterar sobre un conjunto usando for_each loop
En este enfoque, un bucle for_each acepta una función que se ejecuta sobre cada uno de los elementos del contenedor.
Sintaxis:
for_each (InputIterator start_iter, InputIterator last_iter, Función fnc)
start_iter: La posición inicial desde donde se deben ejecutar las operaciones de la función.
last_iter: La posición final hasta donde debe ejecutarse la función.
fnc/obj_fnc: el tercer argumento es una función o una función de objeto cuya operación se aplicaría a cada elemento.
A continuación se muestra el programa C++ para implementar el enfoque anterior:
C++
// C++ program to implement // the above approach #include<bits/stdc++.h> using namespace std; void print(int x) { cout << x << " "; } // Function to display the // elements of set void display(set<int> s) { for_each(s.begin(), s.end(), print); } // Driver code int main() { // Empty set container set<int> s; // Insert elements in random order s.insert(10); s.insert(20); s.insert(30); s.insert(40); s.insert(50); // Invoking display() function display(s); return 0; }
Producción:
10 20 30 40 50
Publicación traducida automáticamente
Artículo escrito por varshapoddar2402 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA