gpt4 book ai didi

c - switch 语句的更好替代方案

转载 作者:太空狗 更新时间:2023-10-29 17:16:23 24 4
gpt4 key购买 nike

我知道这已经被讨论过了,并且有多个答案。参见 Performance of array of functions over if and switch statements例如,但是我想得到一些其他的想法。

我有一个带有大型 switch 语句的函数。这是 26 个 case,每个都有一个“左”或“右”选项。此函数根据两个给定参数(planedirection)返回一个指针:

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]

我一直在考虑一系列函数,但这也可能很乏味,我不确定这是否是最佳选择。我也不清楚如何正确地做到这一点。有什么想法吗?

最佳答案

您可以像这样创建一个查找表:

double *pointers[26][2] = {
{ p_YZ_L, p_YZ_R },
...
};

那么你的函数就变得简单多了:

double* getPointer(int plane, int direction) {
if ((plane >= 0) && (plane < 26) && (direction >= 0) && (direction < 2)) {
return pointers[plane][direction];
} else {
return NULL;
}
}

关于c - switch 语句的更好替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40426757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com