c++ - 存储数据结构c++

标签 c++ data-structures

我有很多数据(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/

相关文章:

c++ - 类之间复杂的循环依赖

c++ - 寻找特殊的 C++ 数据结构

java - Android JNI错误: NoSuchMethodError: no non-static method

C++:将 UTF16 字符的十六进制表示形式转换为十进制(如 python 的 int(hex_data, 16))

Java D 堆实现 - deleteMin() 中的无限循环

php - DomDoc/SimpleXML/XSLT : parsing to add auto-incrementing id attributes to each unique element child of an element

regex - 基本 json > 结构问题(使用 'Go')

C++如何在不使用额外空间的情况下将二叉树转换为二叉搜索树

c++ - 等式运算符重载 : Is (x! =y) == (!(x==y))?

c++ - 名字和姓氏不一起读入集合