c++ - 如何在 C++ 中将 10 位映射到 6 位(尽可能高效)?

标签 c++ function optimization logic neural-network

所以我从功能上知道我想要发生什么,我只是不知道让计算机做到这一点的最佳方法......在 C++ 中......

我想实现一个 C++ 函数,将 10 位序列映射到 6 位序列。

现在不要管这些位代表什么......有 2^10 = 1024 个可能的输入。有 2^6 = 64 个不同的输出。应该有很多花样。显然有很 multimap 案。但这很复杂。这是一个已知的映射,只是一个复杂的映射。

输出只是 64 种可能性中的一种。也许他们都不习惯。他们可能不会。但假设他们这样做。

现在,我在想一个四重嵌套的 switch 语句,它只处理 1024 种情况中的每一种,并处理内联业务,为指向我传递给此函数的任何结构的任何指针分配适当的值。这似乎很幼稚,而且有点慢。并不是说我已经实现了,但这就是我想先问你的原因。

这个基本功能(映射)必须在每个语句节点运行,通常不止一次,因为系统希望支持尽可能多的语句。我问你,如何在 C++ 中尽可能高效地将 10 位映射到 6 位?

我知道映射是什么,我知道 10 位的哪些输入与 6 位的输出对应......我完全可以硬编码......不知何故?多开关太丑了。我怎样才能将我的 10 位映射到 6 位?!神经网络?内存松饼?你会怎么做?

自言自语:这就是我不喜欢查找表的原因。让我们假设所有输入的可能性均等(当然它们不是,并且可以更有效地排序,但仍然如此)然后平均需要数组的 512 内存前进来检索输出值......似乎如果你让一棵(全局的,为什么不)二叉树 10 层深,你覆盖了 1024 个输入,平均只需 10 步就可以检索输出......如果有好的模式,可能会更少......给定一个确定性函数运行如此频繁,如何最好地从已知输入中检索已知输出?

最佳答案

我会使用包含 1024 个元素的查找表。所以硬编码并通过索引访问它。

这节省了对大量 switch 语句的需求,并且可能更具可读性。

关于c++ - 如何在 C++ 中将 10 位映射到 6 位(尽可能高效)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7593646/

相关文章:

c++ - OpenCV 3.1.0 无法使用 CMake 进行编译

python - 更好地理解这段 python 代码

c++ - 无法将虚函数移到 header 之外

python - 通过脚本级命令行参数激活 Python 的优化模式

sql - MySQL alter table 中 RENAME 比 DROP+ADD 更快

c - 在 C 中优化搜索算法

c++ - 带有外部模板的自定义类型 {fmt} 格式化程序,有什么缺点吗?

c++ - Win32 API 枚举 dll 导出函数?

c++ - 为什么我收到以下错误 : "no match for ' operator= ='" ?(带有模板的嵌套类)

javascript - 具有多个参数的 JQuery 自定义函数不起作用