面试IBM时,面试官提到一个问题:给一个vector对象,如何实现遍历一个删除一个。这个问题主要考察vector的erase函数。
erase函数的声明如下:
iterator erase(
iterator _Where
);
iterator erase(
iterator _First,
iterator _Last
);
作用:从vector中删除从指定位置开始的一个或一系列元素。
参数:
_Where :要从vector中删除的元素的位置
_First:从vector中删除的第一个元素的位置
_Last:从vector中删除的最后一个元素后边的位置
返回值:指向所有所有被删除元素后剩余的第一个元素的迭代器,如果没有这样的元素,返回指向vector结尾的指针。
erase函数调用后,原有的迭代器会失效,而erase的返回值可以作为当前有效的迭代器。
void EraseAll(vector<int>& array)
{
vector<int>::iterator itr = array.begin();
while(itr != array.end())
{
itr = array.erase(itr);
}
}