c++ - 在 BOOST_FOREACH 循环中访问迭代器

标签 c++ boost iterator foreach

我有一个 BOOST_FOREACH 循环来遍历列表。不幸的是,我还需要将迭代器缓存到特定项。

typedef List::iterator savedIterator;

BOOST_FOREACH(Item &item, list)
{
// stuff...
  if (condition)
    savedIterator = &item; // this won't work

// do more stuff...     
}

显然我可以使用 list.begin()..list.end() for 循环来做到这一点,但我已经越来越喜欢 BOOST_FOREACH。有办法解决这个问题吗?

最佳答案

这是不可能的,因为您无权访问指向循环内当前项的迭代器。

您可以使用当前项目数据以某种方式从列表中获取迭代器,但我不知道这是否是一个好主意,从性能方面也是如此。

我建议您使用您自己提出的 list.begin() .. list.end() 解决方案,在我看来,这是最容易实现和识别的。

关于c++ - 在 BOOST_FOREACH 循环中访问迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/969496/

相关文章:

c++ - 为什么在函数体内使用 `typename`

c++ - opencv 在 GUI 中创建一个输入文本框并读取它

c++ - 在 boost::bind 中使用已删除的函数

c++ - += 在没有 boost 的 vector 上

python - 创建一个包含上限所有子集的列表(但其中 lst[i] ≤ 上限[i])

c++ - 如何使用Frama-Clang解析C++程序

c++ - boost::rtree 受 gcc 编译器的影响很大

c++ - 错误 : conversion from long int to non-scalar type, 将迭代器与 null 进行比较

java - 迭代器 hasext 给出第二个值

C++ 函数参数 : Passing Data to Subroutines and variables