【发布时间】:2016-09-17 16:15:47
【问题描述】:
我有一个向量 std::vector。我想迭代向量以找到匹配项,如果找到想要返回指向元素的指针,如下所示:
const int * findint(std::vector <int> &v, int a)
{
std::vector<int>::const_iterator i1,i2;
i1 = v.begin();
i2 = v.end();
for(;i1 != i2;++i1) {
if(a== *i1) {
return(i1);
}
}
return(0);
}
使用 GNU g++2.95.3 编译器编译和工作正常,但使用 GNU g++ 4.9.2 编译不正常,并给出以下错误:
error: cannot convert 'std::vector<GenFld>::const_iterator {aka __gnu_cxx::__normal_iterator<const int*, std::vector<int> >}' to 'const int*' in return
[exec] return(i1);
需要帮助。
【问题讨论】:
-
为什么要指针?您可以 index = std::distance(v.begin(), i1);返回(&v[ix])
-
或者使用 std::find(v.begin(), v.end(), a)
标签: c++ pointers c++11 vector iterator