【发布时间】:2014-09-04 13:12:43
【问题描述】:
我正在尝试从特定索引处的向量中删除一个对象。向量迭代器在整个程序中跟踪索引。在下面的代码中,第一个 IF 语句完美运行。但是,如果迭代器指向除最后一个元素之外的任何位置,我会从向量中删除该元素,然后递增迭代器。程序崩溃并显示“迭代器不可递增”。
我运行了几次调试器,一切看起来都正确,所以我看不到我缺少什么?
vector<Card> myVector; //container to hold collection of cards.
vector<Card>::iterator myVectorIterator; //points to each "card" in the collection.
Card Collection::remove()
{
if (myVectorIterator== myVector.end()-1) { //at the last card
//erase the "current" card
myVector.erase(myVectorIterator);
//update to the first card.
myVectorIterator= myVector.begin();
}
else
{
myVector.erase(myVectorIterator);
//crashes here!
myVectorIterator++;
}
return *myVectorIterator;
}
【问题讨论】:
-
erase的返回值是一个迭代器,指向最后一个被擦除元素之后的元素的位置。