预计“ [''token之前,预计无限制的ID



我从代码中遇到两个错误。我相信他们与我创建了一个载体对象的事实有关,该矢量对象拥有int类型的向量对象(即向量的向量(。当我尝试使用下标运算符访问向量对象中的向量数组时,我会收到一条与此帖子标题相同的错误消息。

这是我的代码:

int main()
{
    vector<int> M;
    vector<vector<int>> cases;
    int numberOfCase;
    cin >> numberOfCase;
    for(int i = 1; i <= numberOfCase; i++)
    {
        int s;
        cin >> s;
        for(int j = 1; j <= s; j++)
            cin >> M[j];
        cases.push_back(M);
    }
    // determine size of M;
    vector<int> seen;
    for(int i = 1; i <= cases.size(); i++)
    {
        for(int j = 1; j < cases[i].size(); j++)
        {
            for(int w = 1; w < seen.size(); w++)
            {
                if(cases[i].[j] == seen[w]);// error
                else
                    seen.push_back(cases[i].[j]); // error
            }
        }
    }
    for(int i = 1; i <= seen.size(); i++)
        cout << seen[i] << " ";
}

您不能这样做索引访问:

            if(cases[i].[j] == seen[w]);
            else
                seen.push_back(cases[i].[j]);

用:

替换它
            if(cases[i][j] == seen[w]);
            else
                seen.push_back(cases[i][j]);

注意删除的点。

您为什么要进行如此非常规的if结构?我将其写为

            if(cases[i][j] != seen[w])
                seen.push_back(cases[i][j]);

旁注:正如其他人所指出的(我已经注意到自己:((,您的代码中还有许多其他错误和不幸:

  • 您正在尝试使用1个基于1个索引。C使用基于0的索引,因此您的循环在类似数组的对象上应从0到< array_length
  • cin >> M[j];无效,因为vector是空的。在向量中读取int.push
  • 您应该在阅读循环的每次迭代中清空M向量,否则它仍然包含上一个迭代中的值(我确定那不是您想要的(

基于您遇到的错误,您的问题在于这些代码的行:

for(int j = 1; j < cases[i].size(); j++)
{
    for(int w = 1; w <= seen.size(); w++)
    {
        if(cases[i].[j] == seen[w]); //here
        else
            seen.push_back(cases[i].[j]); //here
    }
}

错误是[i][j]之间存在一个点,这导致了TH错误。只需删除即可。

您遇到的另一个问题是向量索引从0而不是1开始,并且它们的结尾为大小,因此数字必须小于不小于大小,并且索引应在0开始。

最新更新