如何删除数组中第一次出现的值?

时间:2017-01-09 23:00:01

标签: c++

我有一个整数容器,我想从中删除一个特定的值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);
    }
}

1 个答案:

答案 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为真,它将始终包含该项,即使它匹配。

请注意,这不是最有效的方法,只是一种修改代码的方法,以便它可以解决问题。