c++ - 对于以下类型的数据表示,什么是好的数据结构?

标签 c++ list vector stl

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

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 < std::vector< std::list > >

也就是说,外部 vector 将包含逐帧数据。内部 vector 将包含每个体素列表数据。

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

最佳答案

  1. 帧列表。

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

    typedef std::vector<Voxel> Frame;
    
  3. Voxel = int 列表。

    typedef std::vector<int> Voxel;
    

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

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

关于c++ - 对于以下类型的数据表示,什么是好的数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24481753/

相关文章:

java - 当 B 扩展 A 时从 List<A> 转换为 List<B>

R矩阵求和列向量

c++ - 在模板类中定义友元函数

python - For循环堆栈和外部函数而不重复popleft()

python - 我应该使用 Python 双端队列还是列表作为堆栈?

c++ - 在二维 vector 中搜索数字序列的更快方法是什么?

c++ - VS2012 中不允许使用 {...} 进行 vector <字符串> 初始化?

c++ - CryptGenRandom 和 CNG BCryptGenRandom API 之间的区别

c++ - 任何 lambda 表达式都可以表示为(模板化的)结构吗

c++ - 将任何派生类使用的函数放在基类中?