如何遍历具有struct指针的向量?

0 c++ iteration struct pointers vector

struct some_struct{
     some_struct *pointer_to_another_struct;
     int a;
some_struct(int value ) :a (value), pointer_to_another(NULL)()
};

...

vector<some_struct *> tree;
...

for ( auto it = tree.begin(); it != tree.end();  ++it) {
     it->a=10;
}
Run Code Online (Sandbox Code Playgroud)

这显然不是迭代结构指针向量的正确方法,因为我的编译器给了我错误.我该如何解决?另外,当我将指针存储在向量中时,有什么我应该担心的吗?

dwc*_*las 6

首先取消引用迭代器:

(*it)->a=10;
Run Code Online (Sandbox Code Playgroud)

在你的代码,您试图访问元素avector<some_struct *>::iterator,这没有任何意义.您想要取消引用迭代器来访问struct指针:

some_struct * ptr = *it;
Run Code Online (Sandbox Code Playgroud)

或者,既然你有C++ 11,那么只使用一个范围for循环可能更有意义:

for (auto ptr : tree)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

这相当于:

for (some_struct * ptr : tree)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)