是否有更好/更有效的方法来存储大型数组

时间:2011-06-15 19:32:50

标签: c++ arrays qt

我正在打开一个文本文件,该文件可容纳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文件中读取数据时进行填充。

3 个答案:

答案 0 :(得分:3)

如果你只需要快速索引,并且你事先知道元素的数量(lineCount),那么没有什么能比旧数组好。*

如果您还想快速添加,请使用动态数组,例如std::vectorQVector

如果您想按键快速搜索某个项目,请查看std::setstd::mapQSetQHash

[*]几乎没有。在评论中发布您的备选方案。

答案 1 :(得分:0)

使用std::list<dataFrame>。它不会尝试分配连续的内存。如果您正在寻找更多背景信息,请尝试查找基本数据结构(数组,链表,各种树)的简短摘要以及它们在内存/访问/删除/插入性能方面的权衡。

答案 2 :(得分:0)

我的猜测是你关注的是内存使用情况,因为你在谈论一个大型数据集。我不认为存储它比存储它更有效(存储方式)。每dataFrame的开销只是指向它的指针。除非您使用堆栈,否则开销是不可避免的,并且由于其大小有限,您不应将堆栈用于大型数据集。