In this article we will see how to erase elements from a std::list using iterators.
std::list provides 2 member function to delete elements using iterators i.e.
iterator erase (const_iterator position);
It deletes the element representing by passed iterator “position” and returns the iterator of element next to last deleted element.
iterator erase (const_iterator first, const_iterator last);
It accepts a range of elements as an argument and deletes all the elements in range (firs, last] and returns the iterator of element next to last deleted element.
Frequently Asked:
#include <iostream> #include <list> #include <iterator> #include <algorithm> int main() { // Create a list and initialize it with 7 elements std::list<int> listOfInts( { 2, 3, 4, 6, 4, 9, 1, 2, 8, 9, 4, 6, 2, 4, 9 }); //Display The List std::copy(listOfInts.begin(), listOfInts.end(), std::ostream_iterator<int>(std::cout, " ")); std::cout << std::endl; // Iterator itList points to element next to begin std::list<int>::iterator itList = ++(listOfInts.begin()); // Erasing element represented by iterator itList i.e. 3 itList = listOfInts.erase(itList); //Display The List std::copy(listOfInts.begin(), listOfInts.end(), std::ostream_iterator<int>(std::cout, " ")); std::cout << std::endl; //Increment iterator itList++; // Erase a range of elements i.e. 6 to end listOfInts.erase(itList, listOfInts.end()); //Display The List std::copy(listOfInts.begin(), listOfInts.end(), std::ostream_iterator<int>(std::cout, " ")); std::cout << std::endl; return 0; }
Output
2 3 4 6 4 9 1 2 8 9 4 6 2 4 9 2 4 6 4 9 1 2 8 9 4 6 2 4 9 2 4
To compile above code on Linux use following command,
g++ –std=c++11 example.cpp
Best Resources to Learn C++:
[showads ad=inside_post]
In the next articles we will see how to erase elements using a criteria and also in a loop.
Thanks
Pingback: How to remove elements from a List while Iterating – thisPointer.com