Я получил 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
вам нужно сделать что-то вроде:
struct coord {
int x;
int y;
};
class whatever
{
public:
//data being what you have in your board
data& operator[] (struct coord) {
//some code
}
};
Ваша первая попытка была довольно близка к работе. Проблема в том, что оператор [] для вектора переводит целочисленный индекс туда, где в векторе вы хотите изменить (и вектор должен быть достаточно большим, чтобы существовать). Однако вы хотели карту; который создаст элемент и назначит его для вас. Таким образом, std::map<std::vector<int>, char>
получил бы то, что вы хотели. (хотя это может иметь не лучшую производительность).
Ваша вторая попытка потерпела неудачу по той же причине, что и первая (индекс должен быть целым числом), а третья была исправлена ответом Тайкера.