我有一个大数组(图像),我需要对该数据进行许多小的可配置计算。我将在这里发布一个示例。 注意:这不是实际问题,而是我需要做的最小/希望说明性示例。
// different functions that can be called based on the configuration
float func1( float* a )
{
return (*a) * (*a);
}
float func2( float* a )
{
return (*a) + (*a);
}
float func3( float* a )
{
return 2 * (*a) * (*a);
}
// my data
float* data = new float[1024*1024];
// function that manages the configurations
int main( )
{
int param1 = 0;
int param2 = 1;
for ( int k = 0; k < 1024*1024; k++ )
{
if ( param1 == 2 && param2 == 0 )
data[k] = func1( data + k );
else if ( param1 == 1 && param2 == 1 )
data[k] = func2( data + k );
else if ( param1 == 0 && param2 == 1 )
data[k] = func3( data + k );
else
continue;
}
}
在我的代码中,将循环放在每个函数内部是没有意义的。
但是,param1 和 param2 在循环期间保持不变,并且它们在编译时是已知的。
有没有办法消除 if/elseif 语句的影响?