我有一个整数容器,我想从中删除一个特定的值v
。容器可以包含多个v
副本,但我只想删除遇到的第一个实例。如何修复我的代码才能完成此任务?
void delete (int s[] , int &top , int v)
{
int ts[size] ;
int ttop=-1;
while(top!=-1)
{
if(s[top]!=v)
push(ts,ttop,s[top]);
pop(top);
}
while(ttop!=-1)
{
push(s,top,ts[ttop]);
pop(ttop);
}
}
答案 0 :(得分:0)
您需要定义一个标志,该标志将在第一次查找后设置。
void delete (int s[] , int &top , int v)
{
bool found = false;
int ts[size] ;
int ttop=-1;
while(top!=-1)
{
if (s[top]!=v)
{
push(ts,ttop,s[top]);
}
else
{
if (found == false)
{
found = true;
push(ts,ttop,s[top]);
}
}
pop(top);
}
while(ttop!=-1)
{
push(s,top,ts[ttop]);
pop(ttop);
}
}
只要found
为false,它也会检查元素是否匹配。一旦found
为真,它将始终包含该项,即使它匹配。
请注意,这不是最有效的方法,只是一种修改代码的方法,以便它可以解决问题。