C++ 删除数组中的多个元素

C++ 删除数组中的多个元素,c++,C++,我正在尝试编写一个代码,如果一个数组在不同的索引中有相同的元素,那么该代码将删除所有元素。它适用于一个元素删除或奇数索引(即1、3、5等)处的元素,但如果连续索引具有相同的元素,则忽略一个元素 我刚刚尝试了这个来获得阵列 for(int i=0;i<n;i++) //for deletion { if(arr[i]==_delete) { arr[i

我正在尝试编写一个代码,如果一个数组在不同的索引中有相同的元素,那么该代码将删除所有元素。它适用于一个元素删除或奇数索引(即1、3、5等)处的元素,但如果连续索引具有相同的元素,则忽略一个元素

我刚刚尝试了这个来获得阵列

for(int i=0;i<n;i++)                                     //for deletion
    {
        if(arr[i]==_delete)
        {   
            arr[i]=arr[i+1];
           --n;

        }

    }
我建议您使用std::vector作为对象的容器

std::vector<TYPE> vec ;
// initialise vector
或者,您可以使用std::list。它具有线性时间复杂性。

我建议您使用std::vector作为对象的容器

std::vector<TYPE> vec ;
// initialise vector

或者,您可以使用std::list。它具有线性时间复杂度。

< P>作为一个附加的解决方案,如果你想处理内置的C++数组,标准的STD::Delphi算法可以重写如下:

void remove(int _delete) {
    int j = 0;
    for (int i = 0; i < n; ++i) {
        if (arr[i] != _delete) {
            arr[j++] = arr[i];
        }
    }
    // update the size!
    n = j;
}
非常漂亮:


我们只保留数组中只需要的元素,并覆盖那些我们不感兴趣的元素,它们可以相等或不删除,在位置j开始,直到结束< /p>

作为附加的解决方案,如果你想处理内置的C++数组,标准的STD::移除算法可以这样改写:

void remove(int _delete) {
    int j = 0;
    for (int i = 0; i < n; ++i) {
        if (arr[i] != _delete) {
            arr[j++] = arr[i];
        }
    }
    // update the size!
    n = j;
}
非常漂亮:


我们在数组中保留我们只需要的元素,并覆盖我们不感兴趣的元素。它们可以是相等的,也可以是不相等的,从位置j开始删除,直到最后

从后面迭代,然后它应该通过使用std::vector而不是数组来启动?这将使您的生活更加简单。有一个标准的算法:std::remove\u ifiterate从后面开始,然后它应该使用std::vector而不是数组来启动?这将使你的生活更加简单。有一个标准的算法:std::remove\u if