21xrx.com
2024-12-23 00:20:44 Monday
登录
文章检索 我的文章 写文章
如何在C++中删除数组中的特定元素
2023-06-30 17:20:38 深夜i     --     --
C++ 删除 数组 特定元素

在C++中,要删除数组中的特定元素可能看起来是个挑战,但实际上这并不难。下面介绍一种基本的实现方式。

首先,我们需要定义数组和要删除的元素的值。假设我们要删除数组a中的值为val的元素。我们可以先遍历一遍数组,将所有不等于val的元素移动到数组的前面。这可以通过双指针的方式实现。


int ptr1 = 0;

int ptr2 = 0;

while (ptr2 < n) { // n是数组a的长度

  if (a[ptr2] != val) {

    a[ptr1++] = a[ptr2];

  }

  ptr2++;

}

在上述代码中,ptr1指向不等于val的元素在数组中应该出现的位置,ptr2指向当前遍历的元素。

这个过程结束后,数组a的前ptr1个元素就是我们要保留的。接下来,我们可以将数组的长度赋值为ptr1,这样数组中剩余的元素将被忽略。


n = ptr1;

此时,数组a中的所有值为val的元素都被“删除”了。需要注意的是,这并没有真正删除数组中的元素,而是通过覆盖的方式忽略掉了这些元素。

完整代码:


#include <iostream>

using namespace std;

int main()

{

  int a[10] = 2;

  int val = 2;

  int ptr1 = 0;

  int ptr2 = 0;

  while (ptr2 < 10) {

    if (a[ptr2] != val) {

      a[ptr1++] = a[ptr2];

    }

    ptr2++;

  }

  int n = ptr1;

  for (int i = 0; i < n; i++) {

    cout << a[i] << " ";

  }

  return 0;

}

运行结果:


1 3 4 5 6 7 8

需要注意的是,这种方式只能删除数组中第一次出现的特定元素。如果需要删除所有值为val的元素,可以使用类似的思路,将不等于val的元素都移动到数组前面,这样数组长度就不会包含任何值为val的元素。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复