c++,删除数组零元素
时间: 2024-12-24 10:18:38 浏览: 6
在C++中,如果你想删除数组中的零元素并保持剩余非零元素的顺序不变,可以采用双指针的方法。这里是一个简单的示例:
```cpp
#include <iostream>
void removeZeros(int arr[], int& size) {
// 初始化两个指针,一个指向开始,一个指向第一个非零元素
int i = 0, j = 0;
while (i < size) {
if (arr[i] != 0) {
// 如果当前元素不是零,移动到新的位置
arr[j++] = arr[i];
}
else {
// 如果是零,直接跳过
i++;
}
}
// 更新数组大小,去掉最后的零元素
size = j; // 或者你可以将j赋值给size,这取决于你的需求
}
int main() {
int arr[] = {0, 1, 0, 3, 4, 0, 5};
int size = sizeof(arr) / sizeof(arr[0]);
std::cout << "Original array: ";
for (int i : arr) {
std::cout << i << " ";
}
removeZeros(arr, size);
std::cout << "\nArray after removing zeros: ";
for (int i : arr) {
std::cout << i << " ";
}
return 0;
}
```
在这个例子中,`removeZeros`函数会遍历数组,如果遇到非零元素就将其移到新位置`j`,然后`j`作为实际数组大小更新。运行完这个程序后,你会看到原数组中的零元素已被移除。
阅读全文