如何在函数C ++中声明函数(或传递任意大小的数组)

时间:2016-09-15 21:08:44

标签: c++ arrays functional-programming

我有一个函数(不是主函数),其中我生成的大小数组是根据输入文件确定的,因此我无法对其进行硬编码。

我有一个庞大的switch语句,我有大约一千行代码重复相同的50行,根据一些改变w.r.t的逻辑循环并与数组交互。开关。

我能想到解决这个问题的最简单,最简单的方法是在整个函数中声明一个子函数,该函数可以访问这些数组。

所以,

my_outer_func(){
     int x[5] = {0};

     void my_inner_function(){
         for (int i = 0; i < 5; i++){
             x[i] += 1;             
         } 
     }

     my_inner_function();
}

但是,这不会编译。这是我经常在F#或其他功能语言中做的事情。我将如何在C ++中实现它?

或者,我将如何实现我正在寻找的功能?

如果遇到与我相同的问题,并且你转到lambda函数,这里有一个例子可以做我上面写的:

my_outer_func(){
    auto test = [&x]{
        for (int i = 0; i < 5; i++){
            x[i] += 1;
        }
    };
    test();
}

并有输入:

my_outer_func(){
    auto test = [&x](int a){
        for (int i = 0; i < 5; i++){
            x[i] += a;
        }
    };

    test(4);
} 

0 个答案:

没有答案