使用下标运算符的整数向量元素比较失败,但在函数处成功使用

Aqu*_*Ash 0 c++ windows api stl vector

我正在编写一个回调函数,它具有对结构中传递给它的int向量的引用.当我尝试使用下标运算符[]访问向量中的元素时,Intellisense指示==无法比较两个元素,特别是错误是错误C2678:二进制'==':找不到带左手操作数的运算符类型'std :: vector <_Ty>'(或没有可接受的转换).但是当使用at()函数时没有问题.

//body of call back function
searchInfo* argVal = (searchInfo*) Parameter;
for(int i = argVal->inclStartPos; i < argVal->exclEndPos; ++i){
    if(argVal->numVector[i] == argVal->searchNum)//problem here
        argVal->result = true;
//this is the structure passed through pointer

struct searchInfo{
int inclStartPos;
int exclEndPos;
vector<int>* numVector; 
int searchNum;
bool result;
};
Run Code Online (Sandbox Code Playgroud)

由于矢量的[]运算符和at()函数的工作方式差不多(这里的差异无关紧要),为什么会出错呢?

Igo*_*ous 6

实际上,您正在将vector <int>与int进行比较,因为字段numVector具有类型

vector<int>*
Run Code Online (Sandbox Code Playgroud)

简单来说,你已经声明了一个向量数组.Operator []将返回vector类型的值.

可能你拼错了宣言.也许你想声明numVector如下:

vector<int> numVector;
Run Code Online (Sandbox Code Playgroud)