gpt4 book ai didi

c++ - 是否有可能实现一个可以容纳 POD 元素并在编译时初始化分配的静态存储的容器?

转载 作者:太空狗 更新时间:2023-10-29 20:12:27 25 4
gpt4 key购买 nike

例如,像 map 这样包含 20000 个条目的对象。在运行时不调用insert方法,在编译时初始化它的元素,把这个映射写入二进制文件,就像一个全局的int数组。

最佳答案

编译时间:
不使用运行时 map::insert():

使用 C++11,您可以声明和初始化一个全局对象。

#include<map>
std::map<int, int> m = {{0,0}, {1,1}, {2,2}};
int main () {}

在某些全局对象构造函数中,您可以将此 map 写入文件。

struct Global {
Global (const char* fileName) {
std::ofstream file(fileName);
for(auto pair : m)
// insert operation
}
}
g_Initialize("xyz.txt");

因此,在 main() 运行之前,您已准备就绪。

执行此操作时,请注意 static initialization order fiasco .

更新:std::map 只是一个方便的示例。这里的关键是使用std::initializer_list .您也可以使用自定义类。

关于c++ - 是否有可能实现一个可以容纳 POD 元素并在编译时初始化分配的静态存储的容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27479124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com