gpt4 book ai didi

c++ - 使用下标运算符的整数 vector 元素比较失败,但使用 at 函数成功

转载 作者:太空宇宙 更新时间:2023-11-04 15:50:25 25 4
gpt4 key购买 nike

我正在编写一个回调函数,它有一个对在结构中传递给它的 int vector 的引用。当我尝试使用下标运算符 [] 访问 vector 中的元素时,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;
};

既然 vector 的 [] 运算符和 at() 函数几乎(这里的区别无关紧要)以相同的方式工作,为什么会出错?

最佳答案

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

vector<int>*

简单地说,您已经声明了一个 vector 数组。运算符 [] 将返回一个 vector 类型的值。

您可能拼错了声明。也许您想按如下方式声明 numVector:

vector<int> numVector;

关于c++ - 使用下标运算符的整数 vector 元素比较失败,但使用 at 函数成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9499077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com