我有一个问题,我正在用C ++制作RPG游戏,这是我的问题:
我的游戏中有一个包含“gid”元素的一维矢量,如下图所示:
这个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矢量
我该怎么做?
答案 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];