gpt4 book ai didi

c++ - msvc2013无法编译包含巨大查找表的头文件

转载 作者:行者123 更新时间:2023-11-30 05:33:40 25 4
gpt4 key购买 nike

我有一个只有 header 的库,其中包含一个巨大的查找表(超过一百万个 double )。查找表定义:

#ifndef EGM96LUT_h__
#define EGM96LUT_h__

#include <vector>

namespace coord
{
const std::vector<std::vector<double>> EGM96LUT = {{...},{...},...};
}

#endif

当我尝试使用 visual studio 编译包含此 header 的内容时,它会挂起很长时间然后崩溃。我可以在大约 10 秒内在 gcc 中构建相同的代码。

我知道如果我在 .cpp 文件中静态编译 LUT 可能会起作用,但我真的不想破坏库的仅 header 特性。我也知道我可以将数据存储在某种类型的 .dat 文件中并从磁盘读取它,但我也试图避免这种情况并保持所有内容的编译。

是否有可能有助于缩短构建时间但不使用 .cpp 的解决方法?

最佳答案

你总是可以打破它。一次生成一个内部 vector (使用您最喜欢的脚本语言生成此长文本),然后将它们存储在外部 vector 中。

因为根据您的描述,它是崩溃的解析器,这将解决它,因为它会减少咀嚼。

将其更改为

也可能有效
const std::vector<const std::vector<double> >

因为这确实是二维数组存储的内容。

关于c++ - msvc2013无法编译包含巨大查找表的头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34643026/

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