I have list with objects. I get some items from that list and do something with items. If work is done without errors i wish to delete these items from list. After that, on erase I get exception of incompatible iterator. I understand that tmp is different list. But how to solve this problem?
#include <list>
class A
{
public:
A(int i):i_(i){}
private:
int i_;
};
int _tmain(int argc, _TCHAR* argv[])
{
std::list<A> list;
A a(1), b(2), c(3);
list.push_back(a);
list.push_back(b);
list.push_back(c);
std::list<A> tmp;
tmp.insert(tmp.end(), list.begin(), list.end());
// do something with tmp
// if all is ok, then erase what is done
list.erase(tmp.begin(), tmp.end());
return 0;
}
tmp.Insert
not always get full list
. It can copy part of list
, so i don't want clear whole list
.