remove()返回值是什么
面试宝典有道题:
#include<iostream>
#include<vector>
using namespace std;
void print(vector<int>);
int main()
{
vector<int> array;
array.push_back(1);
array.push_back(6);
array.push_back(6);
array.push_back(3);
//删除array中的所有的6
vector<int>::iterator itor;
vector<int>::iterator itor2;
itor=array.begin();
for (itor=array.begin();itor!=array.end();itor++;)
{
if (6==*itor)
{
itor2=itor;
array.erase(itor2);
}
}
print(array);
return 0;
}
void print(vector<int> v)
{
cout<<"\nvector size is: "<<v.size()<<endl;
}
以上有问题,itor会变成野指针,解决办法:
array.earse( remove(array.begin(), array.end(),6), array.end() );
请问remove()返回值是什么, 是第一个值为6的元素的itor吗?
[解决办法]
template <class ForwardIterator, class T>
ForwardIterator remove (ForwardIterator first, ForwardIterator last, const T& val)