'begin' не был объявлен при использовании с указателем - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть фрагмент кода следующим образом:

#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
}

Почему begin и end не объявлены, когда они используются с указателями? С *vectP следует обращаться так, как если бы оно было vect, поскольку оно разыменовано, или я что-то неправильно понял? Как мне исправить это?

1 Ответ

0 голосов
/ 29 апреля 2018

Вы неправильно указали свой операторский приоритет. *vectP.begin() означает *(vectP.begin()) (что, конечно, не работает), а не (*vectP).begin(), что вы имеете в виду. Но вам, вероятно, следует сказать, что vectP->begin().

...