Run*_*ble 3 c++ iterator loops for-loop vector
我有一种情况,我正在通过矢量,行事:
std::vector::iterator iter = my_list.begin();
for ( ; iter != my_list.end(); ++iter )
{
if ( iter->doStuff() ) // returns true if successful, false o/w
{
// Keep going...
}
else
{
for ( ; iter != m_list.begin(); --iter ) // ...This won't work...
{
iter->undoStuff();
}
}
}
在正常情况下 - 假设一切顺利 - 我一路前进my_list.end()并成功结束循环.
但是,如果在我做某事时出现问题,我希望能够撤消所有内容 - 基本上将我的步骤回溯到向量的开头,一次一个地以相反的顺序撤消所有内容.
我的问题是,当我到达my_list.begin()- 如嵌套for循环中所示 - 我还没有完成,因为我仍然需要调用undoStuff()列表中的第一个元素.现在,我可以在循环之外进行最后的调用,但这看起来有点不洁净.
我看到它的方式,我只有在我到达时才会这样做my_list.rend().但是,我无法将std :: vector :: iterator与std :: vector :: reverse_iterator进行比较.
鉴于我正在尝试做什么,迭代器类型/循环组合的最佳选择是什么?
当谈到STL向量时,我有点生疏,但是可以std::vector::reverse_iterator从你的初始迭代器创建一个吗?然后你只需要从前进的最后一个项目开始,并且能够将它与之比较my_list.rend()以确保处理第一个项目.