【问题标题】:What is a good Data Structure for the following type of data representation?对于以下类型的数据表示,什么是好的数据结构?
【发布时间】:2014-06-30 01:08:12
【问题描述】:

我正在尝试逐帧存储网格的体素信息。也就是说,在每一帧中,我都试图存储每个体素将包含的图元。一切都只是整数键,所以本质上它是一个像这样的表:

FRAME 1
Voxel 1 : { 3,4,5 }
Voxel 2 : { 7,8 }
Voxel 3 : NULL
..
..
Voxel 5000 : {1223,43,42}

FRAME 2
Voxel 1 : { 3,5 }
Voxel 2 : { 7,8,0 }
Voxel 3 : NULL
..
..
Voxel 5000 : {123,413,422}

...

存储它的最佳方式是什么?在这一点上,我正在考虑类似的东西

std::vector <:vector> >

即外向量将包含逐帧数据。内部向量将包含每个体素列表数据。

这样可以吗?或者我可以使用更好的模板 DS 吗?

【问题讨论】:

  • 我可以看到即使是 3D 锯齿状数组也非常慢,更不用说 2D 锯齿状链表数组了。我敢打赌,随着至少一个维度的展平,您会看到速度显着提高。

标签: c++ list vector stl


【解决方案1】:
  1. 帧列表。

    std::vector<Frame> frames;
    
  2. 帧 = 体素列表。

    typedef std::vector<Voxel> Frame;
    
  3. 体素 = ints 的列表。

    typedef std::vector<int> Voxel;
    

颠倒声明的顺序来使用它们。

typedef std::vector<int> Voxel;
typedef std::vector<Voxel> Frame;
std::vector<Frame> frames;

【讨论】:

    【解决方案2】:

    “存储它的最佳方式是什么?”。

    您的问题没有唯一的正确答案。鉴于您对所存储数据的描述,您选择了一个非常合理的数据结构。

    如果您有特定的优化目标(例如,最小化执行时间、最小化内存使用),那么不同的数据结构可能更有效地实现您的目标。

    【讨论】:

      猜你喜欢
      • 2010-11-26
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      • 2017-09-24
      • 2010-11-03
      相关资源
      最近更新 更多