gpt4 book ai didi

C++ 长 switch 语句还是用 map 查找?

转载 作者:IT老高 更新时间:2023-10-28 12:43:45 28 4
gpt4 key购买 nike

在我的 C++ 应用程序中,我有一些值作为代码来表示其他值。为了翻译代码,我一直在争论是使用 switch 语句还是 STL map。开关看起来像这样:

int code;
int value;
switch(code)
{
case 1:
value = 10;
break;
case 2:
value = 15;
break;
}

map 将是 stl::map<int, int>并且翻译将是使用用作键值的代码进行简单查找。

哪个更好/更高效/更清洁/被接受?为什么?

最佳答案

就个人而言,我会使用 map ,因为它的使用意味着数据查找 - 使用开关通常表示程序行为的差异。此外,使用 map 修改数据映射比使用开关更容易。

如果性能是一个真正的问题,分析是获得可用答案的唯一方法。如果分支错误预测足够频繁,则切换可能不会更快。

考虑这一点的另一种方法是将代码和相关值组合到数据结构中是否更有意义,特别是如果代码和值的范围是静态的:

struct Code { int code; int value; };

Code c = ...

std::cout << "Code " << c.code << ", value " << c.value << std::end;

关于C++ 长 switch 语句还是用 map 查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2465738/

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