C++删除数组中的某个元素
时间: 2023-06-19 21:10:50 浏览: 181
C++中的数组是静态的,大小在声明时就已经确定了,因此无法动态删除元素。但是可以将需要删除的元素标记为无效值或者将其后面的元素依次向前移动来模拟删除操作。
以下是两种常见的实现方式:
1. 标记无效值
可以将需要删除的元素赋值为一个特定的无效值,比如0或者-1。在访问数组元素时,判断其是否为无效值,如果是则跳过。
示例代码:
```c++
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(int);
int target = 3;
// 标记需要删除的元素为0
for (int i = 0; i < n; i++) {
if (arr[i] == target) {
arr[i] = 0;
break;
}
}
// 访问数组时判断是否为0
for (int i = 0; i < n; i++) {
if (arr[i] != 0) {
cout << arr[i] << " ";
}
}
```
2. 移动元素
将需要删除的元素后面的元素依次向前移动一位,覆盖需要删除的元素。最后将数组的大小减1。
示例代码:
```c++
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(int);
int target = 3;
// 查找需要删除的元素
int index = -1;
for (int i = 0; i < n; i++) {
if (arr[i] == target) {
index = i;
break;
}
}
// 将后面的元素向前移动一位
for (int i = index; i < n - 1; i++) {
arr[i] = arr[i + 1];
}
// 将数组大小减1
n--;
// 访问数组
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
```
需要注意的是,如果数组中有重复元素,上述代码只会删除第一个匹配到的元素,如果需要删除所有匹配到的元素,需要在循环中继续查找并删除。
阅读全文