将1D矢量转换为2D

时间:2014-03-28 01:07:37

标签: c++ vector 2d tile

我有一个问题,我正在用C ++制作RPG游戏,这是我的问题:

我的游戏中有一个包含“gid”元素的一维矢量,如下图所示:

http://i.stack.imgur.com/rrAc9.png

这个1D矢量包含400个元素(我的地图是20x20),我想将它转换为2D矢量,所以我可以创建一个瓷砖网格......

我试过这个:

map_floor2D.resize(map_floor.size(), map_floor);
    for (int i = 0; i < map_floor2D.size(); i++)
    {
        for (int j = 0; j < map_floor2D[i].size(); i++)
        {
            cout << map_floor2D[i][j];
        }
    }

map_floor是1D向量。 map_floor2D是2D矢量

我该怎么做?

2 个答案:

答案 0 :(得分:1)

vector<int> map_floor1D;
vector<vector< int> > map_floor2D;
map_floor2D.resize(20);
for (int i = 0; i < 20; i++)
{
    map_floor2D[i].resize(20);
}
for (int i = 0; i < map_floor1D.size(); i++)
{
    int row = i / 20;
    int col = i %20;
    map_floor2D[row][col] = map_floor1D[i];
}

答案 1 :(得分:0)

我根本不做任何转换。只需在1D数据上创建2D视图:

const int WIDTH = 16;

const int x = 5;  // 5 across
const int y = 6;  // 6 down

cout << map_floor[y*WIDTH + x];