Dado un Set , la tarea es eliminar un rango de valores de este Set usando Iterator.
Ejemplo:
Input: set = [10 20 30 40 50 60 70 80 90], start_iterator = 3, end_iterator = 8 Output: 10 20 80 90 Input: set = [1 2 3 4 5] start_iterator = 1, end_iterator = 3 Output: 3 4 5
Enfoque: en este método, se elimina un rango de elementos del conjunto. Esto se hace con la ayuda de dos iteradores . El primer iterador apunta al elemento inicial del rango y el segundo iterador apunta al último elemento del rango. El primer iterador es exclusivo , mientras que el último iterador es inclusivo , lo que significa que ese elemento también se eliminará al señalar el último iterador.
Sintaxis:
iterator erase (const_iterator startPositionIterator_exclusive, const_iterator endingPositionIterator_inclusive);
A continuación se muestra la implementación del enfoque anterior:
Programa:
// C++ program to delete an element // of a Set by passing its value #include <iostream> #include <set> using namespace std; // Function to print the set void printSet(set<int> myset) { // Get the iterator set<int>::iterator it; // printing all the elements of the set for (it = myset.begin(); it != myset.end(); ++it) cout << ' ' << *it; cout << '\n'; } // Function to delete the element of set void deleteRange(set<int> myset) { // printing all the elements of the set cout << "\nSet originally: "; printSet(myset); // Get the starting Iterator at 3rd element set<int>::iterator start_itr = myset.begin(); start_itr++; start_itr++; // Get the ending Iterator at 2nd last element set<int>::iterator end_itr = myset.end(); end_itr--; end_itr--; // Erase the elements in the range // of the iterators passed as the parameter myset.erase(start_itr, end_itr); // printing all the elements of the set cout << "Set after deletion of range" << " from 3rd till 2nd last: "; printSet(myset); } // Driver code int main() { set<int> myset; // Get the set for (int i = 1; i < 10; i++) myset.insert(i * 10); // Delete an element from the Set deleteRange(myset); return 0; }
Producción:
Set originally: 10 20 30 40 50 60 70 80 90 Set after deletion of range from 3rd till 2nd last: 10 20 80 90