首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建4D查找表

创建4D查找表
EN

Stack Overflow用户
提问于 2013-06-13 17:01:00
回答 1查看 1K关注 0票数 2

我需要根据以下内容创建快速的4D查找表: 1-它将接收4个输入变量(u,v,i,j),每个变量的范围从0到15。2-查找表返回一个8位的预计算值如何在C语言中用非常快的代码实现这个4D查找表

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-13 17:04:43

只需在堆栈上创建一个4维数组。在大多数平台上,16^4字节的大小应该适合堆栈,否则应设置为静态或全局大小。它给了编译器关于布局的充分知识,它是一种众所周知的常用语言构造,它应该优化好:

代码语言:javascript
复制
  uint8_t lookup[16][16][16][16];   // global table about 64KB 


  int main(int, char **)
  {
       ...

当然,您可以将一维数组设置为uint8_t lookup[16*16*16*16],然后将值相乘为lookup[u*16*16*16 + v*16*16 + i*16 + j],但我非常怀疑您是否能够使这种方法比四维数组更有性能(在四维数组中,编译器会在内部执行这种乘法)。

由于您正在询问有关初始化的问题,下面是一个如何初始化一个4维数组的示例。为了简单起见,它只是[4][4][4][4],所以您必须将其增加到16 (16行的16块,16系列的16个数字。

代码语言:javascript
复制
uint8_t test[4][4][4][4]= {
       { // [0][x][y][z]
         { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, 
         { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, 
         { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, 
         { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }  },

       { // [1][x][y][z]
         { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, 
         { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, 
         { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, 
         { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 }  },

       { // [2][x][y][z]
         { 3, 3, 3, 3 }, { 3, 3, 3, 3 }, { 3, 3, 3, 3 }, { 3, 3, 3, 3 }, 
         { 3, 3, 3, 3 }, { 3, 3, 3, 3 }, { 3, 3, 3, 3 }, { 3, 3, 3, 3 }, 
         { 3, 3, 3, 3 }, { 3, 3, 3, 3 }, { 3, 3, 3, 3 }, { 3, 3, 3, 3 }, 
         { 3, 3, 3, 3 }, { 3, 3, 3, 3 }, { 3, 3, 3, 3 }, { 3, 3, 3, 3 }  },                  

       { // [3][x][y][z]
         { 4, 4, 4, 4 }, { 4, 4, 4, 4 }, { 4, 4, 4, 4 }, { 4, 4, 4, 4 }, 
         { 4, 4, 4, 4 }, { 4, 4, 4, 4 }, { 4, 4, 4, 4 }, { 4, 4, 4, 4 }, 
         { 4, 4, 4, 4 }, { 4, 4, 4, 4 }, { 4, 4, 4, 4 }, { 4, 4, 4, 4 }, 
         { 4, 4, 4, 4 }, { 4, 4, 4, 4 }, { 4, 4, 4, 4 }, { 4, 4, 4, 4 }  }  
};
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17083089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档