【发布时间】:2013-03-07 14:19:08
【问题描述】:
在 C++ 中,您可以这样做:
static const char * [4] = {
"One fish",
"Two fish",
"Red fish",
"Blue fish"
};
... 这为您提供了一个很好的只读数组数据结构,它在运行时不需要任何 CPU 周期来初始化,因为所有数据都已为您布置好(在可执行文件的只读内存中)页)由编译器。
但是如果我宁愿使用不同的数据结构而不是数组呢?例如,如果我希望我的数据结构能够通过键快速查找,我必须这样做:
static std::map<int, const char *> map;
int main(int, char **)
{
map.insert(555, "One fish");
map.insert(666, "Two fish");
map.insert(451, "Red fish");
map.insert(626, "Blue fish");
[... rest of program here...]
}
...由于地图数据结构在运行时被填充,因此不太优雅且效率较低,即使所有必要的数据在编译时都是已知的,因此(理论上)可以完成这项工作。
我的问题是,在 C++(或 C++11)中有没有办法创建一个只读数据结构(例如地图),其数据完全在编译时设置,因此预先填充并准备就绪在运行时使用,数组的方式可以是什么?
【问题讨论】:
标签: c++ c++11 compile-time