迭代器的偏移位置为 std::list

offsetting position of iterator for a std::list

本文关键字:std list 位置 迭代器      更新时间:2023-10-16

请考虑以下不完整的代码片段:

for (std::list<CollidableNode*>::iterator it = m_Enemies.begin(); it != m_Enemies.end();it++)
{
    //for current position+1 to end loop
    for (std::list<CollidableNode*>::iterator jt = it+1; jt != m_Enemies.end();jt++)
    {
        //do stuff
    }
} 

这段代码会产生明显的错误,但说明了我正在尝试做的事情,即:在嵌套循环中,将循环的起点设置为列表中的当前位置,加上一个位置,这样就不会执行重复检查。

注意事项是列表的大小高度动态,每次更新都会检查列表中是否有项目以删除,并且经常添加新项目,以便删除速度比矢量快。

是否可以将迭代器偏移到所需位置,如果是这样,我该怎么做?

提前致谢

可能是 std::next 是你需要的。