我有很多数据(7k 行)以这种方式存储:
#include <vector>
#include <deque>
std::deque<std::deque<std::vector<unsigned char>>> data =
{
{{0}},
{{1,0},
{0,1}},
{{1,1,0,0},
{0,1,1,0},
{1,0,0,1},
{0,1,0,1},
{0,0,1,1}},
{{1,1,1,0,0,0},
{0,1,1,1,0,0},
{1,0,1,0,1,0},
{0,1,1,0,1,0},
...
{0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1}}
};
这使我的代码运行得更快,因为我可以跳过某些部分。 vector 的长度不需要可变,但这只是一种简单的方法。 问题是现在编译只需几分钟,而不是几秒钟。
有没有更好的方法来存储这些数据?还是应该在运行时加载?
如果它是在运行时加载的,那不就是在那里花费时间吗?
最佳答案
查看您的编译器是否支持预编译 header ,如果支持,请将此数据作为该 PCH 的一部分。这将导致仅当数据实际更改时才会出现缓慢的工作,并将其与所有其他代码更改分开。
如果出于某种原因 PCH 不是一个选项,您还可以创建一个 extern
是您的 std::vector
的 header ,并有一个 . cpp 文件包含你的 ~7k 行元素。如果文件未修改,大多数编译器不会重新编译单个单元。
关于c++ - 存储数据结构c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33626013/