这是vector的基本二进制搜索功能。我想访问一个对象的get函数,但是我得到了错误。
bool binFindInVec(vector<Client> *vec,string sur){
int from,to,pos;
from = 0;
to = vec->size()-1;
while(from<=to){
pos = (from+to)/2;
if(vec[pos]->getSurname() == sur){
return true;
}
else if(vec[pos]->getSurname() > sur){
to = pos-1;
}
else{
from = pos + 1;
}
}
return NULL;
}
错误:
在函数&#39; bool binFindInVec(std :: vector *,std :: string)&#39;:
176 14 [错误]基本操作数&#39; - &gt;&#39;有非指针类型&#st; :: vector&#39;
179 19 [错误]基本操作数&#39; - &gt;&#39;有非指针类型&#39; std :: vector&#39;
答案 0 :(得分:3)
在调用运算符[]:
之前,你应该取消引用'vec'(*vec)[pos].getSurname();
更好(更安全),通过引用传递vector参数。不作为指针:
bool binFindInVec(vector<Client> const& vec,string sur)
答案 1 :(得分:-1)
编写vec[pos]->getSurname()
假设vec
的元素是指针(或智能指针)。由于您将普通Client
对象的向量作为指针传递,因此您需要取消引用vec
才能使用operator[]