Requisito previo: Vectores en C++ STL
Los vectores se conocen como arrays dinámicas con la capacidad de cambiar su tamaño automáticamente cuando se inserta o elimina un elemento, y el contenedor maneja automáticamente su almacenamiento automáticamente.
Los conjuntos son un tipo de contenedores asociativos en los que cada elemento tiene que ser único porque el valor del elemento lo identifica. El valor del elemento no se puede modificar una vez que se agrega al conjunto, aunque es posible eliminar y agregar el valor modificado de ese elemento.
El vector de conjuntos se puede utilizar para diseñar estructuras de datos complejas y eficientes, en este artículo vamos a comprobar uno de esos casos en los que el vector de conjuntos podría ser muy útil.
Sintaxis:
vector<conjunto<tipo de datos>> v ;
Inserción en Vector de Conjuntos
Los elementos se pueden insertar en un vector usando la función push_back() de C++ STL . Primero inserte elementos en un conjunto usando insert() . Luego inserte ese conjunto en el vector usando push_back() .
El siguiente ejemplo demuestra la operación de inserción en un vector de conjuntos:
C++
// C++ program to demonstrate the // insertion into a vector of sets #include <bits/stdc++.h> using namespace std; // Defining the number of sets // in the vector and number of // elements in each set #define ROW 4 #define COL 5 // Driver Code int main() { // Initialize vector of sets vector<set<int> > v; // Elements to insert // in column int num = 10; // Inserting elements // into vector for (int i = 0; i < ROW; i++) { // Stores the column elements set<int> s; for (int j = 0; j < COL; j++) { s.insert(num); num += 5; } // Push the set in the vector v.push_back(s); } // Display the vector of sets for (int i = 0; i < v.size(); i++) { for (auto x : v[i]) cout << x << " "; cout << endl; } return 0; }
10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105
Eliminación o eliminación en un vector de conjuntos
-
Los conjuntos se pueden eliminar del final de un vector de conjuntos mediante la función pop_back() de C++ STL.
El siguiente ejemplo demuestra la eliminación de conjuntos desde el final de un vector de conjuntos:
C++
// C++ program to demonstrate
// the removal of sets from
// the end of vector of sets
#include <bits/stdc++.h>
using
namespace
std;
// Defining the number of sets
// in the vector and number of
// elements in each set
#define ROW 4
#define COL 5
// Driver Code
int
main()
{
// Initialize the
// vector of sets
vector<set<
int
> > v;
// Elements to insert
// in column
int
num = 10;
// Inserting elements
// into vector
for
(
int
i = 0; i < ROW; i++) {
// Vector to store
// column elements
set<
int
> s;
for
(
int
j = 0; j < COL; j++) {
s.insert(num);
num += 5;
}
// Push the set
// into the vector
v.push_back(s);
}
// Display the vector of sets
// before removal of sets
cout <<
"Before Removal:"
<< endl;
for
(
int
i = 0; i < v.size(); i++) {
for
(
auto
x : v[i])
cout << x <<
" "
;
cout << endl;
}
// Remove sets from last
// index of the vector
v.pop_back();
v.pop_back();
// Display the vector of sets
// after removal of sets
cout << endl
<<
"After Removal:"
<< endl;
for
(
int
i = 0; i < v.size(); i++) {
for
(
auto
x : v[i])
cout << x <<
" "
;
cout << endl;
}
return
0;
}
Producción:Before Removal: 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 After Removal: 10 15 20 25 30 35 40 45 50 55
-
El valor del elemento no se puede modificar una vez que se agrega al conjunto, aunque es posible eliminar el valor de ese elemento. La función erase() se usa para eliminar un elemento particular de un conjunto particular de un vector de conjuntos.
El siguiente ejemplo demuestra la eliminación de un elemento de conjunto dado de un conjunto particular de un vector de conjuntos:
C++
// C++ program to demonstrate
// the removal of sets from
// the end of vector of sets
#include <bits/stdc++.h>
using
namespace
std;
// Defining the number of sets
// in the vector and number of
// elements in each set
#define ROW 4
#define COL 5
// Driver Code
int
main()
{
// Initialize vector of sets
vector<set<
int
> > v;
// Elements to insert
// in column
int
num = 10;
// Inserting elements
// into vector
for
(
int
i = 0; i < ROW; i++) {
// Vector to store
// column elements
set<
int
> s;
for
(
int
j = 0; j < COL; j++) {
s.insert(num);
num += 5;
}
// Push the set
// into the vector
v.push_back(s);
}
// Display the vector of sets
// before removal of sets
cout <<
"Before Removal:"
<< endl;
for
(
int
i = 0;
i < v.size(); i++) {
for
(
auto
x : v[i])
cout << x <<
" "
;
cout << endl;
}
// Erase 70 from 3rd set
v[2].erase(70);
// Erase 55 from 2nd set
v[1].erase(55);
// Display the vector of sets
// after removal of sets
cout << endl
<<
"After Removal:"
<< endl;
for
(
int
i = 0; i < v.size(); i++) {
for
(
auto
x : v[i])
cout << x <<
" "
;
cout << endl;
}
return
0;
}
Producción:Before Removal: 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 After Removal: 10 15 20 25 30 35 40 45 50 60 65 75 80 85 90 95 100 105
El siguiente ejemplo demuestra el uso del vector de conjuntos:
Dada una string S , la tarea es separar la string S dada en tres conjuntos diferentes de caracteres, es decir, vocal, consonantes o un carácter especial.
A continuación se muestra la implementación del problema anterior:
C++
// C++ program to implement vector of sets #include <bits/stdc++.h> using namespace std; // Function to print set // of different characters void separateChar(string s) { // Vector of set vector<set<char> > v(3); // Insert data in vector of set for (int i = 0; i < s.length(); i++) { if (s[i] >= 'a' && s[i] <= 'z') { // Insert vowels if (s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u') v[0].insert(s[i]); // Insert consonants else v[1].insert(s[i]); } // Insert special characters else v[2].insert(s[i]); } // Iterate over all the sets for (int i = 0; i < 3; i++) { cout << "Elements of set " << i + 1 << " :"; // Print elements of each set for (auto it : v[i]) { cout << it << " "; } cout << endl; } } // Driver Code int main() { string s = "geeks@for&geeks@"; // Function Call separateChar(s); }
Elements of set 1 :e o Elements of set 2 :f g k r s Elements of set 3 :& @
Publicación traducida automáticamente
Artículo escrito por vermaaayush68 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA