我需要在C++程序中使用静态表来查找组合。
这是一个简单的示例(我的表将大三到四倍):
int TABLE[3][3] = {
/*2*/ /*4*/ /*8*/
/*2*/ {4, 8, 16},
/*4*/ {8, 16, 32},
/*8*/ {16, 32, 64}
};
我喜欢这种表,因为从索引中查找组合非常容易,而且很容易看到组合。
但是,我不喜欢“键”仅在注释中定义的事实,这似乎是错误的。
是否有人在代码中定义了类似的表,并且有任何一般性建议吗?
编辑:我的表无法计算。它是程序的特定“设置”。
最佳答案
如果您需要固定的查找时间,并且不想使用unordered_map
(例如,因为可以避免哈希计算,那么可以将编码与查找分开)。
struct TableElement {
int row;
int col;
int val;
} raw_table[] = {
{2, 2, 4}, {2, 4, 8}, {2, 8, 16},
{4, 2, 8}, {4, 4, 16}, {4, 8, 32},
{8, 2, 16}, {8, 4, 32}, {8, 8, 64} };
(您可以通过一些工作使某些东西变得更漂亮)
unordered_map
关于c++ - 在C/C++中声明这些表的干净方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16831873/