'begin' 与指针一起使用时尚未声明

'begin' has not been declared when used with a pointer

我有一段代码如下:

#include<algorithm>
#include<vector>

std::vector<std::string> vect;
std::vector<std::string> * vectP;

vect.push_back("ele0");
vect.push_back("ele1");

void func(){
    if(std::find(*vectP.begin(),*vecP.end(),"ele0")!=*vectP.end())
    //'begin' and 'end' have not been declared
}

为什么 beginend 与指针一起使用时没有声明? *vectP 应该被视为 vect 因为它被取消引用了,还是我误解了什么?我该如何纠正?

您的运算符优先级错误。 *vectP.begin() 表示 *(vectP.begin())(当然这不起作用),而不是 (*vectP).begin(),这就是您的意思。但是你应该拼写 vectP->begin().