establecer::borrar en C++ STL

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.
 

establecer::clear()

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *