c++ - 遍历 vector 的所有成员

标签 c++ vector compiler-errors iteration

我有两个 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/

相关文章:

c++ - stringstream noshowpoint 不起作用

c++ - 排序一个vector,然后放入AVL树,还是直接输入哪个更快?

java - ArrayList 的不安全或未经检查的操作

c++ - lang中的模板函数错误但不是gcc

c++ - 学习c++,在结构中输出变量

C++ 链表 - 构造函数和运算符重载

opencv houghline 向量错误

有人可以详细解释 C 中的链接概念吗

c++ - 如何将智能指针返回到成员变量?

ruby - 面向对象的 Ruby 中的向量加法