Как я могу найти положение объекта (не int) внутри вектора c ++ 2d? - PullRequest
0 голосов
/ 27 мая 2019

Мне нужно отслеживать положение объектов (ящиков) в сетке для игры, похожей на конфетку, которую я разрабатываю.

Самый простой способ отследить их положение в сетке - добавить их в двухмерный вектор, переместить их внутрь вектора в соответствии с игровой логикой. Это просто.

Сложная часть, и где я на самом деле застрял - это получить их текущую позицию на сетке в любой момент времени или, в данном случае, позицию внутри 2-го вектора. Короче говоря, если бы у меня был простой способ периодически проверять положение моего объекта Box внутри его 2d-массива, это решило бы проблему.

Я возился с std: find и std: count, но я новичок, и мне трудно. Тот же код ниже:

#include <algorithm>
#include <iostream>
#include <vector>


using namespace std;

struct position
{
    int x;
    int y;
};

class Box
{
public:
    position currentPosition;

};


int main(int argc, const char * argv[])
{

    Box box1 = Box();
    Box box2 = Box();
    Box box3 = Box();
    Box box4 = Box();
    Box box5 = Box();
    Box box6 = Box();
    Box box7 = Box();
    Box box8 = Box();
    Box box9 = Box();


   // vector<vector<Box>> boxes2dVector;
//
    vector<vector<Box>> boxes2dVector =
    {
        {box1, box2,box3},
        {box4, box5,box6},
        {box7, box8,box9}

    };


    return 0;
}

position getPositionOfBox (Box box, vector<vector<Box>> vct)
{
    position resultPositon;

    /*
     This is what I need...some code that finds the position in the of a Box object in side a 2d array
     */


    return resultPositon;
};

Любые идеи или помощь, кто-нибудь?

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Вы можете попробовать использовать std :: unordered_map, где ключ - это поле, а значение - это его позиция в массиве. В противном случае, я бы порекомендовал сохранить его координаты в самой коробке. Итерация по всему массиву каждый раз даст производительность O (N). До тех пор, пока вы соответствующим образом обновите std :: unordered_map, я думаю, что поиск будет O (1).

...