создание класса, который может получить board1 [{1,1}] = ‘X’; ? (фигурные скобки внутри квадратных скобок)

Я получил H.W. что в одной из строк main.cpp я предполагаю поддержать:

board1[{1,1}]='X';

логический смысл этого заключается в том, чтобы присвоить «игровой доске» символ «X» в позиции (1,1). Я понятия не имею, как создать массив, который получает фигурные скобки, такие как [{int, int}].

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

Постскриптум
так как это символы, а не символы (и так как я не распознаю ни одного термина, относящегося к этой проблеме), очень трудно найти этот тип проблемы в Google, так что это может быть дубликатом :-(, надеюсь, нет.

Я пытался сделать:

первая попытка:

vector<vector<int> > matrix(50);
for ( int i = 0 ; i < matrix.size() ; i++ )
matrix[i].resize(50);
matrix[{1,1}]=1;

2-я попытка:

int mat[3][3];
//maybe map
mat[{1,1}]=1;

3-я попытка:

class _mat { // singleton
protected:
int i ,j;

public:
void operator [](string s)
{
cout << s;
}
};

_mat mat;
string s = "[{}]";
mat[s]; //this does allow me to do assignment also the parsing of the string is a hustle

4

Решение

вам нужно сделать что-то вроде:

    struct coord {
int x;
int y;
};

class whatever
{
public:
//data being what you have in your board
data& operator[] (struct coord) {
//some code
}
};
7

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

Ваша первая попытка была довольно близка к работе. Проблема в том, что оператор [] для вектора переводит целочисленный индекс туда, где в векторе вы хотите изменить (и вектор должен быть достаточно большим, чтобы существовать). Однако вы хотели карту; который создаст элемент и назначит его для вас. Таким образом, std::map<std::vector<int>, char> получил бы то, что вы хотели. (хотя это может иметь не лучшую производительность).

Ваша вторая попытка потерпела неудачу по той же причине, что и первая (индекс должен быть целым числом), а третья была исправлена ​​ответом Тайкера.

2

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