这个错误是什么意思? (errorC2678)以及如何修复代码?

时间:2015-05-05 22:44:12

标签: c++ class methods vector boolean

我的bool方法应该是检查角色" - "在作为私人对象保存的多维向量中#12;数独_"。如果它找到" - "它返回true。否则返回false。它非常简单,所以我不知道为什么我会收到这个错误:

"错误C2678:二进制' ==' :找不到哪个运算符采用类型为' std :: vector>'的左手操作数。 (或者没有可接受的转换)"

这是我的代码:

bool Grid::checkiffull(){

 string selement = "-";

 if (find(sudoku_.begin(), sudoku_.end(), selement) != sudoku_.end())
      return true;
 else
      return false;
}

编辑:

这里是私有对象定义:

vector<vector<string>> sudoku_;

错误显然出现在&#34; xutility&#34;文件,第3026行:

template<class _InIt,
class _Ty> inline
_InIt _Find(_InIt _First, _InIt _Last, const _Ty& _Val, false_type)
{   // find first matching _Val
for (; _First != _Last; ++_First)
    if (*_First == _Val)
        break;
return (_First);
}

1 个答案:

答案 0 :(得分:2)

问题是你的变量是一个字符串向量的向量:

vector<vector<string>> sudoku_;

当您调用find时,您正在搜索string,因此您应该使用简单的vector<string>来调用它,而不是使用嵌套数据类型。

因此,您必须先在“外部”向量中找到正确的项目,然后才能在“内部”向量中使用您的代码。