考虑STL的
理想情况下,完美的编译器会看到这一点,并在编译时预先计算哈希表构造并将其直接嵌入程序中。
这让我想起复古计算和微控制器,它们可能会用C或C++编写软件,考虑到用汇编语言的开发成本:这些环境通常具有有限的RAM但有大量的ROM,并且那些内存数据结构(如
如上所述,C++语言不支持非平凡
那么今天如何实现呢?在16位和32位游戏机的日子里,内存和CPU周期很昂贵。我特别想了解基于ROM卡带的游戏,其中这些结构立即作为原始内存可访问。
unordered_map
。同一模板类被用于在运行时生成的哈希表和由编译时常量值组成的哈希表。虽然C++的最新版本添加了constexpr
支持,但它不扩展到涉及堆操作的更复杂操作。因此,从编译时常量构建哈希表仍必须在运行时完成,使得它与在运行时构建任何其他哈希表同样昂贵。理想情况下,完美的编译器会看到这一点,并在编译时预先计算哈希表构造并将其直接嵌入程序中。
这让我想起复古计算和微控制器,它们可能会用C或C++编写软件,考虑到用汇编语言的开发成本:这些环境通常具有有限的RAM但有大量的ROM,并且那些内存数据结构(如
unordered_map
)肯定可以在编译时预先生成并持久化到ROM中。如上所述,C++语言不支持非平凡
constexpr
进行此操作。我知道您可以把这些数据结构基于数组类型拼凑在一起,或者将它缩小到一个constexpr
- 或者用汇编语言编写所有内容,并手动设置结构的每个字节到十六进制编辑器中,并希望它与编译器对您的struct
类型的表示相匹配(例如)。那么今天如何实现呢?在16位和32位游戏机的日子里,内存和CPU周期很昂贵。我特别想了解基于ROM卡带的游戏,其中这些结构立即作为原始内存可访问。