c++ - 在 C++ 中反转数组的顺序

标签 c++ arrays

<分区>

我正在尝试反转 int 数组的顺序。这是我的代码,其中包含大量错误。

#include <cstdlib>
#include <iostream>

using namespace std;

int [] reverseArray(int []);

int main(){
    int arr[5] = {3,9,11,2,7};
    int arr2[5] = reverseArray(arr);

    for (int i = 0; i < 5; ++i)
    {
        cout << arr2[i] << endl;
    }
}

int [] reverseArray(int param[]){
    int s = sizeof(param)/sizeof(param[0]);
    int j = 0;
    int* a[s];
    for (int i = s ; i >= 0; i--)
    {
        a[j] = param[i];
        j++;    
    }
    return a;
}

我需要将修改后的数组传回主函数。所以请不要建议我自己处理输出的 void 函数。

最佳答案

这是一个使用 std::array 类的实现,它的工作方式更符合您的预期。如果长度在编译时已知,则反向函数能够采用任何大小和类型的数组。我还修复了您的反向逻辑中的错误。它在第一次迭代时超出了参数数组的范围。

此处为实例:http://ideone.com/UuUQ9c

#include <iostream>
#include <array>
using namespace std;

template<class T, size_t N>
std::array<T, N> reverseArray(const std::array<T, N>& param)
{
    int j = 0;
    std::array<T, N> a;
    for (int i = N - 1 ; i >= 0; i--)
    {
        a[j] = param[i];
        j++;    
    }
    return a;
}

int main()
{
    std::array<int, 5> arr = {3,9,11,2,7};
    std::array<int, 5> arr2 = reverseArray<int, 5>(arr);

    for (int i = 0; i < 5; ++i)
    {
        cout << arr2[i] << endl;
    }
}

关于c++ - 在 C++ 中反转数组的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26897988/

相关文章:

c++ - 无法在 DirectShow 中显示两个摄像头

c++ - 在 C++ 中以通用的可移植方式识别类型

c++ - 将派生对象传递给模板

Android:如何在播放媒体(mp3)时以一定毫秒显示文本

java - Scala 中的多维数组

c++ - C++ 中的私有(private)虚函数是否有通用的命名约定?

c++ - 为什么在使用 std::remove() 从 vector 中删除多个值时会发生跳过?

c - 使用 if 语句打印数组中的最后一个元素

java - 访问单独类中的数组时出现问题

java - 优化 - 将 std 输入转换为 java 中的整数数组