我有一段代码如下:

#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()

关于c++ - 与指针一起使用时未声明“开始”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50091145/

10-10 22:48