Как мне создать список в многомерном массиве / сетке C ++ - PullRequest
0 голосов
/ 03 декабря 2018

Я столкнулся с камнем преткновения в моей программе.Я программирую на C ++ и использую OpenGL для графики.Я хочу разделить пространство с помощью сетки (представленной двумерным массивом - grid [rows] [cols]).Сетка будет иметь «ячейки» в каждом индексе.

Внутри этой сетки и в каждом месте INDEX, то есть в сетке [0] [0] Я хочу, чтобы список ID объекта (значения int) собирался по мере их перемещенияв каждую ячейку сетки.Список в сетке указателей [0] [0] должен обновляться в режиме реального времени / динамически с движущимися объектами на экране.

Я хочу получить идентификаторы объектов, когда они заполняют список для проверки столкновения позже.

В качестве визуального представления это должно быть следующим:

Grid Array

+ [0] [0] -> Список []

+ [0] [1] -> Список []

+ [0] [2] ->Список []

+ [0] [3] -> Список []

+ [1] [0] -> Список []

+ [1] [1] -> Список [] ... и т. Д.

Есть ли способ сделать это в C ++?Кажется, Java может создавать новые массивы в точках массива, как мне нужно ... должен быть способ?

Хеш-таблицы, связанные списки так далеко у меня над головой ... но если они - то, что янужно знать, пожалуйста, дайте мне знать, и я рассмотрю их более подробно ... Большое спасибо заранее.

1 Ответ

0 голосов
/ 03 декабря 2018

Попробуй так:

#include <iostream>
#include <vector>
#include <list>
using namespace std;

// some data
struct DATA
{
    int x;
};

int main()
{
    vector<vector<list<DATA>>> matrix_of_lists;
    matrix_of_lists.resize(2);
    matrix_of_lists[0].resize(2);
    matrix_of_lists[1].resize(2);

    DATA d;
    d.x = 1;
    matrix_of_lists[0][0].push_back(d);

    cout << matrix_of_lists[0][0].front().x;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...