我有一个 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/