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