访问BOOST_FOREACH循环中的迭代器

Rod*_*ddy 4 c++ foreach boost iterator

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

typedef List::iterator savedIterator;

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

// do more stuff...     
}
Run Code Online (Sandbox Code Playgroud)

显然我可以使用list.begin().. list.end()for循环,但我已经成长为喜欢BOOST_FOREACH.这有什么方法吗?

Kos*_*801 8

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

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

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