繁体   English   中英

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

[英]How do I iterate through a vector that has struct pointers?

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;
}

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

只需先取消引用迭代器:

(*it)->a=10;

在您的代码中,您尝试访问vector<some_struct *>::iterator元素a ,这没有任何意义。 您想取消引用迭代器以访问结构指针:

some_struct * ptr = *it;

另外,由于您具有C ++ 11,因此仅将范围用于循环可能更有意义:

for (auto ptr : tree)
{
   ...
}

等效于:

for (some_struct * ptr : tree)
{
   ...
}

如果可以使用C ++ 11,则可以改用基于范围的for循环

for (auto element : tree)
{
     element->a=10;    // element is a some_struct*
}

否则,按照书面规定,您需要首先取消引用迭代器以获取基础指针。

dwcanillas回答当然是正确的,但是如果c ++ 11可用,另一种替代方法是使用for-each:

for(some_struct* ptr : tree) {
    ptr->a = 10;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM