【发布时间】:2016-02-14 08:52:56
【问题描述】:
我也尝试使用 v.erase(v.begin()+j) 但我仍然收到“调试断言失败错误框。此功能假设擦除重复项。例如:{1,2,6,8 ,2,8} 是向量的元素。这个函数必须使它成为 {1,2,6,8}。
void removeDup(vector<int>& v)
{
vector<int> x;
int i,j,size;
size=v.size();
for(i=0;i<size;i++)
{
for(j=1;j<size;j++)
{
if(v[i]==v[j])
{
while(v.back()!=v[j])
{
x.push_back(v.back());
v.pop_back();
}
v.pop_back();
while(!x.empty())
{
v.push_back(x.back());
x.pop_back();
}
}
}
}
}
问题发生在 if(v[i]==v[j]) 内部 当我擦除 2 而函数和 v.pop_back() 程序正常工作时没有错误。
【问题讨论】:
-
结果不应该是
[1, 2, 6, 8]吗? -
是的,你是对的,我的错