我正在打开一个文本文件,该文件可容纳100到50,000个dataFrame,并将txt文件的每一行分配给dataFrame,其中dataFrame定义如下:
typedef struct {
double x;
double y;
double z;
double azimuth;
double elevation;
double roll;
} dataFrame;
我需要可访问的数据,以便我可以在qwt中绘制图形(这意味着我需要从数据中创建各种其他数组以及瞬时速度等)但我是一个有点担心,因为我不知道这会减慢这个系统的速度。 目前,我读了行数,然后有
dataFrame* left;
dataFrame* right;
left = new dataFrame[lineCount/2];
right= new dataFrame[lineCount/2];
然后在从txt文件中读取数据时进行填充。
答案 0 :(得分:3)
如果你只需要快速索引,并且你事先知道元素的数量(lineCount
),那么没有什么能比旧数组好。*
如果您还想快速添加,请使用动态数组,例如std::vector
或QVector
。
如果您想按键快速搜索某个项目,请查看std::set
,std::map
,QSet
,QHash
。
[*]几乎没有。在评论中发布您的备选方案。
答案 1 :(得分:0)
使用std::list<dataFrame>
。它不会尝试分配连续的内存。如果您正在寻找更多背景信息,请尝试查找基本数据结构(数组,链表,各种树)的简短摘要以及它们在内存/访问/删除/插入性能方面的权衡。
答案 2 :(得分:0)
我的猜测是你关注的是内存使用情况,因为你在谈论一个大型数据集。我不认为存储它比存储它更有效(存储方式)。每dataFrame
的开销只是指向它的指针。除非您使用堆栈,否则开销是不可避免的,并且由于其大小有限,您不应将堆栈用于大型数据集。