遍历对象列表并指向符合特定条件的节点

时间:2014-04-04 13:29:02

标签: c++ data-structures linked-list iterator

我正在使用自定义数据结构“块”,并在列表中存储了几个块:

 list openList<block>

我现在需要遍历每个块,访问数据成员'f'(整数)并检查哪个具有最低的f成本。

我的逻辑是简单地指针指向最佳块值,而不是每次复制最佳块值。

这是我的代码:

for (std::list<block>::iterator openi = openList.begin(); openi != openList.end();  openi++){
        if ((*openi).f < bestFCost){
            bestFCost = (*openi).f;
            // Here's where I need help....
        }
    }

我不认为我对迭代器的要求是可能的。我想设置

 block * Q 

迭代器指向的数据,但我需要整个对象而不是数据成员。

编辑: 很简单的解决方案我用错字(Q *而不是* Q)来启动Q!

阻止* Q = 0;

然后在循环的一部分我评论道:

 Q = &(*openi)

:)

1 个答案:

答案 0 :(得分:1)

*openi的类型为block,对吗?所以你可以简单地拿出那个地址:

block * Q = &*openi;

&*似乎是多余的,但*是迭代器上的运算符,返回block类型,而不是*是解除引用的场景,并且&再次引用它。

或者您可以存储迭代器本身:

std::list<block>::iterator Q = openi;

或者您可以按值存储对象,假设您实现了复制构造函数:

block Q = *openi;