我得到了H.W.在main.cpp的一行中,我想支持:
board1[{1,1}]='X';
这背后的逻辑意义是在(1,1)的位置为“游戏板”分配字符'X'。我不知道如何创建一个接收大括号的数组,如[{int,int}]。
我该怎么做?
P.S。 因为这些是符号而不是字符(因为我不认识任何属于这个问题的术语)在谷歌搜索这类问题非常困难,所以这可能是重复的:-(,希望不是。 / p>
我试着这样做:
首先尝试:
vector<vector<int> > matrix(50);
for ( int i = 0 ; i < matrix.size() ; i++ )
matrix[i].resize(50);
matrix[{1,1}]=1;
第二次尝试:
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
答案 0 :(得分:7)
你需要做类似的事情:
struct coord {
int x;
int y;
};
class whatever
{
public:
//data being what you have in your board
data& operator[] (struct coord) {
//some code
}
};
答案 1 :(得分:2)
你的第一次尝试,实际上非常接近工作。问题是向量的[]运算符将整数索引取入要更改的向量中的位置(并且向量必须足够大以使其存在)。然而你想要的是地图;这将创建项目并为您分配。因此std::map<std::vector<int>, char>
可以得到你想要的东西。 (虽然它可能没有最好的表现)。
你的第二次尝试失败的原因与第一次相同(索引需要是整数),而第3次则由Tyker的回答纠正。