У меня проблема, я делаю RPG-игру на C ++, и вот моя проблема:
У меня есть 1D вектор, который содержит элементы gid в моей игре, как на картинке:
Этот одномерный вектор содержит 400 элементов (моя карта размером 20х20), и я хочу преобразовать его в двухмерный вектор, чтобы затем создать сетку из плиток …
Я попробовал это:
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-вектор
Как я могу это сделать?
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];
}
Я бы не стал делать какое-либо обращение вообще. Просто создайте 2D вид поверх 1D данных:
const int WIDTH = 16;
const int x = 5; // 5 across
const int y = 6; // 6 down
cout << map_floor[y*WIDTH + x];