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.
La función erase() se usa para eliminar elementos de un contenedor desde la posición o rango especificado.
Sintaxis:
1. setname.erase(position) 2. setname.erase(startingposition, endingposition) Parameters : Position of the element to be removed in the form of iterator or the range specified using start and end iterator. Result : Elements are removed from the specified position of the container.
Ejemplos:
Input : myset{1, 2, 3, 4, 5}, iterator= 2 myset.erase(iterator); Output : 1, 2, 4, 5 Input : myset{1, 2, 3, 4, 5, 6, 7, 8}, iterator1= 3, iterator2= 6 myset.erase(iterator1, iterator2); Output : 1, 2, 3, 8
Errores y Excepciones
1. Tiene garantía de lanzamiento sin excepción, si la posición es válida.
2. De lo contrario, muestra un comportamiento indefinido.
Quitar elemento de una posición particular
CPP
// INTEGER SET EXAMPLE // CPP program to illustrate // Implementation of erase() function #include <iostream> #include <set> using namespace std; int main() { // set declaration set<int> myset{ 1, 2, 3, 4, 5 }; set<int>::iterator it1, it2; // defining it1 pointing to the first // element and it2 to the last element it1 = myset.begin(); it2 = myset.end(); // decrementing the it2 two times it2--; it2--; // erasing elements within the range // of it1 and it2 myset.erase(it1, it2); // Printing the set for (auto it = myset.begin(); it != myset.end(); ++it) cout << ' ' << *it; return 0; }
Producción:
4 5
CPP
// CHARACTER SET EXAMPLE // CPP program to illustrate // Implementation of erase() function #include <iostream> #include <set> using namespace std; int main() { // set declaration set<char> myset{ 'A', 'C', 'E', 'G' }; set<char>::iterator it1, it2; // defining it1 pointing to the first // element and it2 to the last element it1 = myset.begin(); it2 = myset.end(); // decrementing the it2 two times it2--; it2--; // erasing elements within the // range of it1 and it2 myset.erase(it1, it2); // Printing the set for (auto it = myset.begin(); it != myset.end(); ++it) cout << ' ' << *it; return 0; }
Producción:
E G
Eliminar elementos dentro de un rango
CPP
// INTEGER SET EXAMPLE // CPP program to illustrate // Implementation of erase() function #include <iostream> #include <set> using namespace std; int main() { // set declaration set<int> myset{ 1, 2, 3, 4, 5 }; set<int>::iterator it; // defining iterator pointing // to the first element it = myset.begin(); // erasing the first element myset.erase(it); // Printing the set for (auto it = myset.begin(); it != myset.end(); ++it) cout << ' ' << *it; return 0; }
Producción:
2 3 4 5
CPP
// CHARACTER SET EXAMPLE // CPP program to illustrate // Implementation of erase() function #include <iostream> #include <set> using namespace std; int main() { // set declaration set<char> myset{ 'A', 'B', 'C', 'D' }; set<char>::iterator it; // defining iterator pointing // to the first element it = myset.begin(); // erasing the first element myset.erase(it); // Printing the set for (auto it = myset.begin(); it != myset.end(); ++it) cout << ' ' << *it; return 0; }
Producción:
B C D
Complejidad de tiempo:
1. setname .erase( posición ) – constante amortizada
2. setname .erase(posición inicial, posición final ) – O(n), n es el número de elementos entre la posición inicial y la posición final.
Aplicación
Dado un conjunto de enteros, elimine todos los elementos pares del conjunto e imprima el conjunto.
Input :1, 2, 3, 4, 5, 6, 7, 8, 9 Output :1 3 5 7 9 Explanation - 2, 4, 6 and 8 which are even are erased from the set
Algoritmo
1. Ejecutar un bucle hasta el tamaño del conjunto.
2. Verifique si el elemento en cada posición es divisible por 2, si es así, elimine el elemento y asigne el iterador de retorno al iterador actual, si no, incremente el iterador.
3. Imprima el conjunto final.
Nota: borrar devolver el iterador del siguiente elemento
CPP
// CPP program to illustrate // Application of erase() function #include <iostream> #include <set> using namespace std; int main() { // set declaration set<int> myset{ 1, 2, 3, 4, 5, 6, 7, 8, 9 }; // checking for even elements and removing them for (auto i = myset.begin(); i != myset.end(); ) { if (*i % 2 == 0) i=myset.erase(i); else i++; } // Printing the set for (auto it = myset.begin(); it != myset.end(); ++it) cout << ' ' << *it; return 0; }
Producción :
1 3 5 7 9
Publicación traducida automáticamente
Artículo escrito por AyushSaxena y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA