我有两个 struct
定义如下:
struct vertex
{
double x;
double y;
double z;
};
struct finalVertex
{
int n;
vertex v;
};
我使用以下代码遍历列表并打印所有成员:
vector<finalVertex> finalVertices;
vector<finalVertex>::iterator ve;
for ( ve = finalVertices.begin(); ve < finalVertices.end(); ve++ )
{
out << *(ve).v.x << *(ve).v.y << *(ve).v.z << endl;
}
我收到以下错误代码:
main.cpp:651: error: 'class __gnu_cxx::__normal_iterator > >' has no member named 'v'
访问集合元素的语法正确方法是什么?
最佳答案
问题是运算符优先级:写(*ve).v.x
或者更简单,ve->v.x
.
除此之外,我建议您覆盖 operator <<
为你的 vertex
使您的代码更具可读性的结构:
std::ostream& operator <<(std::ostream& out, vertex const& value) {
return out << value.x << " " << value.y << " " << value.z;
}
然后像这样使用它:
for ( ve = finalVertices.begin(); ve != finalVertices.end(); ve++ )
out << ve->v << endl;
关于c++ - 遍历 vector 的所有成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6942244/