我使用模板化的类来定义3D点(称为vec3<T>
),然后将一些点存储在矢量中。我使用typdef
来定义vec3<double> as vec3d
;
因此,我试图在vector<vec3d>
的向量上获得一个迭代器,我在编译过程中遇到了一个我不太懂的错误。我认为重要的是添加通过引用将vector<vec3d>
传递给另一个类的方法。
这是我的代码:
for(vector<vec3d>::iterator ite=neighboursList.begin(); ite!=neighboursList.end(); ++ite)
这是错误消息:
error: conversion from '__gnu_cxx::__normal_iterator<const vec3<double>*, std::vector<vec3<double>, std::allocator<vec3<double> > > >' to non-scalar type '__gnu_cxx::__normal_iterator<vec3<double>*, std::vector<vec3<double>, std::allocator<vec3<double> > > >' requested
如果有人能够发现我正在做的事情有什么问题,我将非常感激。
betaplus
答案 0 :(得分:0)
使用const迭代器:
for (std::vector<vec3d>::const_iterator ite=neighboursList.begin();
/* ^^^^^^^^^^^^^^ /* ite!=neighboursList.end(); ++ite)
{
// ...
}
或者更好,请使用auto
:
for (auto ite = std::begin(neighbourList); ite != std::end(neighbourList); ++ite)
{
// ...
}
或者更好,不要使用迭代器:
for (auto const & neighbour : neighbourList)
{
// ...
}