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)
这显然不是迭代结构指针向量的正确方法,因为我的编译器给了我错误.我该如何解决?另外,当我将指针存储在向量中时,有什么我应该担心的吗?
首先取消引用迭代器:
(*it)->a=10;
Run Code Online (Sandbox Code Playgroud)
在你的代码,您试图访问元素a
的vector<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)