Dada una Lista , la tarea es eliminar un rango de valores de esta Lista usando Iterador.
Ejemplo:
Input: list = [10 20 30 40 50 60 70 80 90], start_iterator = 3, end_iterator = 8 Output: 10 20 80 90 Input: list = [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 de la lista. 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 List by passing its value #include <iostream> #include <list> using namespace std; // Function to print the list void printList(list<int> mylist) { // Get the iterator list<int>::iterator it; // printing all the elements of the list for (it = mylist.begin(); it != mylist.end(); ++it) cout << ' ' << *it; cout << '\n'; } // Function to delete the element of list void deleteRange(list<int> mylist) { // Printing all the elements of the list cout << "\nList originally: "; printList(mylist); // Get the starting Iterator at 3rd element list<int>::iterator start_itr = mylist.begin(); start_itr++; start_itr++; // Get the ending Iterator at 2nd last element list<int>::iterator end_itr = mylist.end(); end_itr--; end_itr--; // Erase the elements in the range // of the iterators passed as the parameter mylist.erase(start_itr, end_itr); // Printing all the elements of the list cout << "List after deletion of range" << " from 3rd till 2nd last: "; printList(mylist); } // Driver Code int main() { list<int> mylist; // Get the list for (int i = 1; i < 10; i++) mylist.push_back(i * 10); // Delete an element from the List deleteRange(mylist); return 0; }
Producción:
List originally: 10 20 30 40 50 60 70 80 90 List after deletion of range from 3rd till 2nd last: 10 20 80 90