【发布时间】:2011-07-26 05:59:56
【问题描述】:
我对 C++ 很陌生,所以我不确定我是否以正确的方式解决这个问题。我正在处理体素数据的 3D 数组,我想创建一个并行数据结构来存储等值面法线向量。内存效率是一个问题,所以我想使用一个 2D 地图数组,它由一个整数索引并包含一个 3D 向量。
这个想法是二维数组索引每个 x 和 y 坐标,而地图只索引包含一个值的 z 坐标(通常在 z 轴的每一行分散在 0 到 3 个值之间)。
问题 1:如何创建像 std::map<int, Vector3f> surfaceNormals; 这样的二维地图数组?
问题 2:我的想法是声明 2D 数组全局然后用一个函数填充它,该函数通过指针处理它并为每个数组单元创建一个映射,下面的代码是否在正确的轨道上? ????? 表示鉴于我对问题 1 的不确定性,我不确定该放什么。
特别是我是否正确管理指针/引用/值,例如最终存储我需要的所有数据?
????? isoSurfaces1 [256][100];
????? *extractIS(float Threshold, ????? *pointy){
????? *surfacePointer = pointy;
for loop over x and y {
std::map<int, Vector3f> surfaceNormals;
for loop over z {
[ ... find surface voxels and their normal vectors ... ]
Vector3f newNormalVector(x,y,z);
surfaceNormals[zi] = newNormalVector;
}
surfacePointer[x][y] = surfaceNormals;
}
return surfacePointer;
}
extractIS(0.45, isoSurfaces1);
【问题讨论】:
-
你的问题描述很不清楚。为什么不简单地将所有数据存储在一个
std::vector中并使用数组算法访问元素?为什么要在那里使用地图? -
花了我一些时间,但我想我明白了。当您在问题中说 3D 矢量 时,您的意思是几何中的矢量,对吗?不是嵌套的
std::vector。对吗?