在C++中拆分数组

Splitting Array in C++

本文关键字:数组 拆分 C++      更新时间:2023-10-16

我正在制作一个游戏,我有一个浮点数组,可以制作一个3D模型,我已经用opengl放置了这些模型。我想做的是分离x,y&z坐标并将它们变成一个多维数组。我想这样做,以便我可以调整相对于地形的 y 位置。我在 init 函数中放置的 for 循环如下:

    for (int x = 0; x < sizeof(desert_scene_plainVerts); x++) {
    if (((x + 3)%3) == 0) {
        //x coord
        terrainxPos[x/3] = desert_scene_plainVerts[x];
    }
    else if (((x + 1)%3) == 0) {
        //z coord
        terrainzPos[(x-2)/3] = desert_scene_plainVerts[x];
    }
    else{
        //y coord
        terrainzPos[(x-1)/3] = desert_scene_plainVerts[x];
    }
}

我在这一行收到错误:

terrainzPos[(x-1)/3] = desert_scene_plainVerts[x];

错误如下:

Thread 1: EXC_BAD_ACCESS (code=2, address= 0x10 etc.)

有谁知道我做错了什么。

假设你正确地声明了terrainxPos[]terrainyPos[]terrainzPos[],你的逻辑看起来不错。 如果这些是vector,请确保正确resize()它们。

但是,您的循环可能更清晰,更容易推理这样编写:

for (int x = 0, v = 0; x < sizeof(desert_scene_plainVerts); x += 3, v++) {
    terrainxPos[v] = desert_scene_plainVerts[x + 0];
    terrainyPos[v] = desert_scene_plainVerts[x + 1];
    terrainzPos[v] = desert_scene_plainVerts[x + 2];
}