21xrx.com
2024-11-08 23:18:11 Friday
登录
文章检索 我的文章 写文章
C++——数组零元素去除
2023-07-04 21:03:50 深夜i     --     --
C++ 数组 零元素 去除

在C++中,数组经常用于存储处理数据。但是,在处理数据时,我们往往需要去除数组中的零元素。本文将介绍如何使用C++语言去除数组中的零元素。

1. 使用for循环去除零元素

我们可以使用一个for循环来遍历整个数组,然后将数组中的零元素移动到数组的末尾。为了实现这一点,我们需要引入两个指针:一个指向当前数组元素,另一个指向当前正在遍历的数组元素。当我们找到一个不是零的数组元素时,将其移动到第一个指针所指向的位置,然后将第一个指针向前移动一位。

示例代码:

int arr[] = 0;

int n = sizeof(arr) / sizeof(arr[0]);

int j = 0;

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

  if (arr[i] != 0) {

    arr[j++] = arr[i];

  }

}

while (j < n) {

  arr[j++] = 0;

}

在上面的代码中,我们使用了两个指针i和j,即第一个指针i指向正在遍历的元素,而第二个指针j指向新数组中的当前位置。当第一个指针i发现当前元素不是零时,它将把该元素复制到第二个指针指向的位置,并使第二个指针j向前移动一位。当第一个指针i遍历完数组时,我们将在新数组的位置j已经有了所有的不为零的元素。接下来,我们只需要将数组中所有剩余的为空的元素设置为零。

2. 使用STL算法去除零元素

在C++中,还有一种更为简便的方法可以去掉数组中的零元素,即使用STL算法。具体操作如下:

使用remove()函数将数组中所有的零元素移动到末尾;

使用erase()函数删除数组末尾的所有零元素。

示例代码:

#include

#include

int main() {

  int arr[] = 3;

  int n = sizeof(arr) / sizeof(arr[0]);

  std::remove(arr, arr + n, 0);

  int newSize = std::distance(arr, std::end(arr));

  std::fill(std::next(arr, newSize), std::end(arr), 0);

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

    std::cout << arr[i] << " ";

  }

  return 0;

}

在上面的代码中,我们首先使用STL的remove()函数将数组中的所有零元素移动到末尾。接下来,我们使用STL的distance()函数计算已经去除零元素的新数组长度,然后使用fill()函数将数组末尾的所有元素设置为零。注意,我们在使用fill()函数时,从新数组的位置开始,而不是从零元素开始。这是因为我们使用了remove()函数来移动数组中的零元素,并且remove()函数会返回指向新数组尾部后一个位置的迭代器。

总结

在C++中,去除数组中的零元素非常容易。我们可以使用for循环来遍历数组,并将零元素移动到数组的末尾,也可以使用STL算法来实现。两种方法都可以实现去除数组中的零元素,但使用STL算法更为方便,代码可读性更高。使用数组去除零元素,可以有效地压缩数组的大小,使其更易于处理和传输。

  
  

评论区

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