C++ 遍历向量的所有成员
我有两个C++ 遍历向量的所有成员,c++,vector,compiler-errors,iteration,C++,Vector,Compiler Errors,Iteration,我有两个structs,定义如下: struct vertex { double x; double y; double z; }; struct finalVertex { int n; vertex v; }; 我使用以下代码迭代列表并打印所有成员: vector<finalVertex> finalVertices; vector<finalVertex>::iterator ve; for ( ve = finalVertic
struct
s,定义如下:
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;
}
向量最终属性;
向量::迭代器ve;
for(ve=finalertices.begin();ve
ve->v.x
您还可以做的是:
(*ve).v.x
但它很糟糕。问题在于运算符优先级:写入(*ve).v.x
或更简单的,ve->v.x
除此之外,我建议您重写运算符
或:
将解引用移动到paren内部,如下所示:
out << (*ve).v.x << (*ve).v.y << (*ve).v.z << endl;
out你不应该写
ve
你必须写作
ve!=finalVertices.end()好吧,你知道,end()是用优化构建内联的,不应该涉及任何典型容器的计算,所以…@ypnos:可能,是的。但是有很多非典型容器。
for ( ve = finalVertices.begin(); ve != finalVertices.end(); ve++ )
out << ve->v << endl;
out << *(ve).v.x << *(ve).v.y << *(ve).v.z << endl;
out << (*ve).v.x << (*ve).v.y << (*ve).v.z << endl;
out << ve->v.x << ve->v.y << ve->v.z << endl;
for ( ve = finalVertices.begin(), end = finalVertices.end(); ve != end; ++ve )
out << (*ve).v.x << (*ve).v.y << (*ve).v.z << endl;
for ( ve = finalVertices.begin(); ve != finalVertices.end(); ++ve )
{
ve->v.x;
}