我有一个函数(不是主函数),其中我生成的大小数组是根据输入文件确定的,因此我无法对其进行硬编码。
我有一个庞大的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);
}