Cómo eliminar un rango de valores de la Lista usando Iterator

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

Publicación traducida automáticamente

Artículo escrito por Code_r 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 *