I am trying to remove items from a C ++ linked list using erase and a list iterator:
#include <iostream> #include <string> #include <list> class Item { public: Item() {} ~Item() {} }; typedef std::list<Item> list_item_t; int main(int argc, const char *argv[]) { // create a list and add items list_item_t newlist; for ( int i = 0 ; i < 10 ; ++i ) { Item temp; newlist.push_back(temp); std::cout << "added item #" << i << std::endl; } // delete some items int count = 0; list_item_t::iterator it; for ( it = newlist.begin(); count < 5 ; ++it ) { std::cout << "round #" << count << std::endl; newlist.erase( it ); ++count; } return 0; }
I get this conclusion and cannot trace the reason:
added item #0 added item #1 added item #2 added item #3 added item #4 added item #5 added item #6 added item #7 added item #8 added item #9 round #0 round #1 Segmentation fault
I am probably mistaken, but I will still be grateful for the help. thanks.
c ++ linked-list segmentation-fault erase
sa125
source share