'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
}
为什么 begin
和 end
与指针一起使用时没有声明? *vectP
应该被视为 vect
因为它被取消引用了,还是我误解了什么?我该如何纠正?
您的运算符优先级错误。 *vectP.begin()
表示 *(vectP.begin())
(当然这不起作用),而不是 (*vectP).begin()
,这就是您的意思。但是你应该拼写 vectP->begin()
.
我有一段代码如下:
#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
因为它被取消引用了,还是我误解了什么?我该如何纠正?
您的运算符优先级错误。 *vectP.begin()
表示 *(vectP.begin())
(当然这不起作用),而不是 (*vectP).begin()
,这就是您的意思。但是你应该拼写 vectP->begin()
.