Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 创建一个可以接收board1[{1,1}]='的类;X'?(方括号内的花括号)_C++_Brackets_Curly Braces_Square Bracket - Fatal编程技术网

C++ 创建一个可以接收board1[{1,1}]='的类;X'?(方括号内的花括号)

C++ 创建一个可以接收board1[{1,1}]='的类;X'?(方括号内的花括号),c++,brackets,curly-braces,square-bracket,C++,Brackets,Curly Braces,Square Bracket,我在main.cpp的其中一行中得到了H.W.,我想支持: board1[{1,1}]='X'; 这背后的逻辑含义是将(1,1)位置的字符“X”分配给“游戏板”。我不知道如何创建一个接收花括号(如[{int,int})的数组 我该怎么做 附言。 因为这些是符号而不是字符(而且我不认识任何属于这个问题的术语),所以在google中搜索这种类型的问题非常困难,所以这可能是重复的:-(,希望不是) 我试着做: 第一次尝试: vector<vector<int> > matri

我在main.cpp的其中一行中得到了H.W.,我想支持:

board1[{1,1}]='X';
这背后的逻辑含义是将(1,1)位置的字符“X”分配给“游戏板”。我不知道如何创建一个接收花括号(如[{int,int})的数组

我该怎么做

附言。 因为这些是符号而不是字符(而且我不认识任何属于这个问题的术语),所以在google中搜索这种类型的问题非常困难,所以这可能是重复的:-(,希望不是)

我试着做:

第一次尝试:

vector<vector<int> > matrix(50);
for ( int i = 0 ; i < matrix.size() ; i++ )
    matrix[i].resize(50);
matrix[{1,1}]=1;
第三次尝试:

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
class\u mat{//singleton
受保护的:
int i,j;
公众:
无效运算符[](字符串s)
{

不能您需要执行以下操作:

    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
将为您提供所需的内容(尽管它可能没有最佳性能)


第二次尝试失败的原因与第一次相同(索引必须是整数)第三个被Tyker的回答纠正了。

你熟悉操作员过载吗?不要只要求我们做作业而不发布你尝试过的东西。它会比朝鲜核计划更快被否决。@UKMonkey嘿,我不是要求做我的H.W。这只是HW的一小部分,而且我也没有要求解决它只是为了知道我应该如何处理它…我将添加我尝试做的那部分。顺便说一下,我同意你的观点,人们不应该只要求别人做他们的工作,我只是想解释为什么我的情况不同。@StoryTeller是的,但这也会使括号和赋值运算符过载。。。(我也不确定我是否应该进行重载)但现在我将检查如何同时重载两个运算符如果您打算专门重载运算符,
{}
是这个类的快捷方式;但是它也可以传递到其他类的构造函数中(见下面的答案)使用std::pair或std::tuple作为映射键可能更合适,因为电路板中的每个位置都将具有相同的维数。@SeanBurton使用自定义类可能更合适;但由于下面的示例演示了这一点;我的回答是为了更好地理解这些尝试为什么不起作用,我没有看到他强调指出这一点。
    struct coord {
        int x;
        int y;
    };

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