我对C++还不是很熟悉,因此我不确定我是否以正确的方式解决了这个问题。我正在处理一个三维体素数据数组,并且想要创建一个并行数据结构来存储等值面法线向量。内存效率是一个问题,因此我想使用一个二维的映射数组,它们由整数索引,并包含一个三维向量。
我的想法是,二维数组索引每个x和y坐标,而映射仅索引包含值的z坐标(通常在z轴的每一行上分散0到3个值)。
问题1:如何创建一个映射数组的二维数组,例如std::map surfaceNormals;?
问题2:我的想法是全局声明这个二维数组,然后用指针处理它并为每个数组单元格创建一个映射的函数来填充它,下面的代码是否正确??????表示我不确定在问题1中应该放什么。
特别是,我是否正确地管理了指针/引用/值,以便实际存储我需要的所有数据?
我的想法是,二维数组索引每个x和y坐标,而映射仅索引包含值的z坐标(通常在z轴的每一行上分散0到3个值)。
问题1:如何创建一个映射数组的二维数组,例如std::map surfaceNormals;?
问题2:我的想法是全局声明这个二维数组,然后用指针处理它并为每个数组单元格创建一个映射的函数来填充它,下面的代码是否正确??????表示我不确定在问题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
中,并使用数组算术访问元素?为什么要在其中使用map? - Björn Pollexstd::vector
。这样正确吗? - Björn Pollex