【发布时间】:2016-11-04 15:46:25
【问题描述】:
我知道这已经讨论过了,并且有多个答案。例如,请参阅Performance of array of functions over if and switch statements,但我想了解其他一些想法。
我有一个带有大 switch 语句的函数。这是 26 个case,每个都有一个“左”或“右”选项。该函数根据两个给定参数(plane 和direction)返回一个指针:
double* getPointer(int plane, int direction) {
switch (plane)
{
case 0:
if (direction == 0)
return p_YZ_L; // Left
else if (dir == 1)
return p_YZ_R; //Right
else {
return 0;
}
break;
...
case 25:
...
}
}
与
planes -> [0-25]
direction -> [0,1]
我一直在考虑一系列函数,但这也可能很乏味,我不确定它是否是最佳选择。我也不清楚如何正确地做到这一点。有什么想法吗?
【问题讨论】:
-
请出示您所说的包含
switch语句的代码。 -
假设左右子案例不共享太多代码,具有 26 个开关案例的两个函数可能是一个不错的选择。
-
数组
double* x[2][26]和return x[direction][plane]怎么样? -
@MichaelWalz 这只显示了一个大的
switch,每个if else内都有case -
我对此有点晚了,但与其使用双精度数组,不如使用带标志的无符号 32 位整数。其中第 0 位是方向,第 1-26 位使用标志指示平面。我说飞机是因为它可以使编队运动〜0(全部向右移动)和〜1(全部向左移动)......您还可以为向上/向下保留额外的位(或者更合适的俯仰,偏航和滚动)。
标签: c