首页 > 解决方案 > 反转数组但只有一个元素返回

问题描述

我试图反转一个数组,我认为 for 循环是错误的,但我展示给它的每个人都没有看到问题。

#include <iostream>

void reverse() {
  int temp;
  const int size = 9;
  int arr[size] = {1, 4, 10, 16, 34, 7, 8, 9, 11};
  for (int i=0; i <size-1; i++){
    for (int j=size-1; j>=0; j--){
      arr[j]= temp;
      arr[i] = temp;
    }
  }
  for(int x= 0; x<size; x++){
    std::cout<<arr[x]<< " ";
  }
}

int main () {

  reverse();
  return 0;
}

标签: c++arrays

解决方案


我建议你使用标准的算法,即std::reverse. 您不必发明一种算法来恢复数组。

因此您的代码减少到

#include <iostream>
#include <array>
#include <algorithm>

void reverse() {
    std::array<int, 9> arr{1, 4, 10, 16, 34, 7, 8, 9, 11};
    std::reverse(arr.begin(), arr.end());
    for (const auto& item : arr) {
        std::cout << item << " ";
    }
}

int main() {
    reverse();
    return 0;
}

从标准库中选择合适的容器和算法将显着提高质量(在错误、可读性等方面)并加快开发速度。此外,在大多数情况下,程序的运行时间也会更短。


推荐阅读