I have a vector of pointers like so:
vector<Item*> items;
I want to clear it. I've tried:
for (unsigned int i = 0; i < items.size(); i++)
    delete items.at(i);
items.clear();
,
while (!items.empty())
{
    delete items.back();
    items.pop_back();
}
,
while (!items.empty())
{
    delete items.at(0);
    items.erase(items.begin());
}
, and
while (!items.empty())
    delete items.at(0);
Every single one of these blows up for some reason or another, including deletion of already deleted objects and out of range vector iterators.
What do I do? I want to be able to reuse that same vector and add more Item pointers into it later. Just using delete without clearing still leaves junk pointers in there, right?
EDIT: Okay, I've switched to shared_ptrs. Now I have
vector<shared_ptr<Item> > items;
Yet, when I do items.clear(); , I get the error "vector iterators incompatible". What am I still doing wrong?
 
     
     
     
     
    