21xrx.com
2025-07-06 08:19:56 Sunday
登录
文章检索 我的文章 写文章
C++如何删除数组中的元素
2023-06-27 20:17:52 深夜i     38     0
C++ 删除 数组 元素

C++中,数组是一种固定长度的数据结构,所有的元素都是在编译时就已经分配好空间的。因此,删除数组中的元素并非一件容易的事情,因为它会导致数组的长度变化。

但是,我们可以通过一些技巧来实现删除数组中的元素。下面介绍几种常用方法:

1. 使用新数组

这种方法需要创建一个新的数组,把原始数组中的元素复制到新数组中,删除目标元素后,再把新数组复制回原始数组中。这个方法的缺点是需要额外的内存空间来存储新数组。

int arr[5] = 5;
int target = 3;
int len = 5;
int newArr[len - 1];
int j = 0;
for (int i = 0; i < len; i++) {
  if (arr[i] != target) {
    newArr[j] = arr[i];
    j++;
  }
}
for (int i = 0; i < len - 1; i++) {
  arr[i] = newArr[i];
}

2. 使用移动元素

这种方法需要把目标元素后面的所有元素都向前移动一位,最后把最后一位删除。这个方法的缺点是需要循环移动数组元素,效率较低。

int arr[5] = 4;
int target = 3;
int len = 5;
for (int i = 0; i < len; i++) {
  if (arr[i] == target) {
    for (int j = i; j < len - 1; j++) {
      arr[j] = arr[j + 1];
    }
    len--;
    i--;
  }
}

3. 标记删除

这种方法需要对目标元素进行标记,表示该元素已经被删除。然后再遍历整个数组,把没有被标记的元素复制到新数组中。这个方法的缺点是需要额外的内存空间来存储新数组。

int arr[5] = 2;
bool del[5] = false;
int len = 5;
int newArr[len - 1];
int j = 0;
for (int i = 0; i < len; i++) {
  if (!del[i]) {
    newArr[j] = arr[i];
    j++;
  }
}
for (int i = 0; i < len - 1; i++) {
  arr[i] = newArr[i];
}

总的来说,删除数组中的元素并不是一个简单的问题,需要根据具体的情况选择不同的方法。在实际的开发中,我们需要根据实际情况来选择最合适的方法。

  
  

评论区