Преобразование 1D вектора в 2D

У меня проблема, я делаю RPG-игру на C ++, и вот моя проблема:

У меня есть 1D вектор, который содержит элементы gid в моей игре, как на картинке:

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

Этот одномерный вектор содержит 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-вектор

Как я могу это сделать?

0

Решение

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

Другие решения

Я бы не стал делать какое-либо обращение вообще. Просто создайте 2D вид поверх 1D данных:

const int WIDTH = 16;

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

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

По вопросам рекламы [email protected]