How to delete a range of values from the List using Iterator
Last Updated :
18 Jan, 2019
Given a List, the task is to delete a range of values from this List using Iterator.
Example:
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
Approach: In this method, a range of elements are deleted from the list. This is done with the help of two iterators. The first iterator points at the starting element of the range and the second iterator points at the last element of the range. The first iterator is exclusive while the last iterator is inclusive which means that element will also get deleted which is pointed by the last iterator.
Syntax:
iterator erase (const_iterator startPositionIterator_exclusive,
const_iterator endingPositionIterator_inclusive);
Below is the implementation of the above approach:
Program:
#include <iostream>
#include <list>
using namespace std;
void printList(list< int > mylist)
{
list< int >::iterator it;
for (it = mylist.begin(); it != mylist.end(); ++it)
cout << ' ' << *it;
cout << '\n' ;
}
void deleteRange(list< int > mylist)
{
cout << "\nList originally: " ;
printList(mylist);
list< int >::iterator start_itr = mylist.begin();
start_itr++;
start_itr++;
list< int >::iterator end_itr = mylist.end();
end_itr--;
end_itr--;
mylist.erase(start_itr, end_itr);
cout << "List after deletion of range"
<< " from 3rd till 2nd last: " ;
printList(mylist);
}
int main()
{
list< int > mylist;
for ( int i = 1; i < 10; i++)
mylist.push_back(i * 10);
deleteRange(mylist);
return 0;
}
|
Output:
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
Share your thoughts in the comments
Please Login to comment...