存储数据结构c++
Store data structure c++
我有很多数据(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}}
};
这使我的代码运行得更快,因为我可以跳过某些部分。向量的长度不需要是可变的,但这只是一种简单的方法。问题是,现在编译只需要几分钟,而不是几秒钟。
有没有更好的方法来存储这些数据?还是应该在运行时加载?
如果它是在运行时加载的,难道不需要时间吗?
查看编译器是否支持预编译的头,如果支持,请将此数据作为PCH的一部分。这将导致只有当数据实际更改时才会发生缓慢的工作,并将其与所有其他代码更改分开。
如果由于某种原因PCH不是一个选项,您也可以创建一个extern
是您的std::vector
的头,并有一个包含约7k行元素的.cpp文件。如果文件未修改,大多数编译器不会重新编译单个单元。
您应该从思考您试图实现的目标开始。你担心你的程序会让用户感觉迟钝吗?
从硬盘加载7kB的数据将比任何人都能注意到的更快。我的猜测是,它几乎可以用于任何目的。如果数据可以在中编译,那么它必须是常量,这意味着无论如何都只需要加载一次。即使是具有严格截止日期的安全关键系统,在程序初始化期间通常也能提供几毫秒的时间。
在不太可能的情况下,这甚至很重要,你应该衡量时间它需要加载数据,看看它是否符合您的目的。
相关文章:
- 链表,反向函数,数据结构
- 如何使用set实现无序数据结构?
- 我们可以将数据永久保存为数据结构吗?
- C++中的可变长度数组/数据结构
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 通过 NIF 从C++返回自定义数据结构
- 编译器上的策略数据结构不起作用
- 尝试构建"lock-free"数据结构C++
- 设计将引用元素移动到开头的数据结构.C++
- 在学习数据结构之前对STL有一个了解是好的吗?
- 如何解析表示树状数据结构的字符串
- 我对数据结构、双向链表有一些问题
- googletest:测试太大的数据结构
- C++中deque数据结构的大O是什么?
- 我可以使用哪种数据结构来处理这种方式
- 将文本文件解析为树状数据结构
- C++ 中具有 O(1) 搜索时间复杂度的数据结构
- 哪些存储了不完整类型的 STL 数据结构可以用作类成员?
- C++,您能否设计一种数据结构,将指针保存在连续内存中并且不会使它们失效?
- 带参数的数据结构的全局声明