我有三个变量int a,b,c,我用它来选择第四个变量d的值。
一个简短的布尔示例:
a=0, b=0, c=0 -> d=0
a=0, b=0, c=1 -> d=1
a=0, b=1, c=0 -> d=2
a=0, b=1, c=1 -> d=1
and so on...
我考虑过创建一个constexpr矩阵来创建映射。缺点是它生成不可读的代码。有更好的选择吗?也许有些提升库或已知的设计模式?
我在c ++ 11中编程
谢谢:)
答案 0 :(得分:2)
如果您可以提供a
,b
和c
作为模板参数而不是函数参数,则可以定义具有三个bool
参数的模板,然后提供感兴趣组合的显式实现,如下所示:
template<bool A, bool B, bool C> constexpr int index() { return -1; }
// Truth table
template<> constexpr int index< true, false, true>() { return 9; }
template<> constexpr int index< true, false, false>() { return 24; }
...
以下是调用这些函数的方法:
cout << index<true,false,true>() << endl; // Prints 9