小编Dyl*_*ebb的帖子

使用 C++ std::list 迭代器替换列表中的项目

我的代码的基本结构是:

using namespace std;
void recursiveFunction(list <int> &jobs,...){
list<int>::iterator i;
int ii;
//code missing
    for(i=jobs.begin(); i != jobs.end(); ++i){
        //more code missing
        list<int>::iterator tempi(i);
        ii=*i;
        jobs.erase(tempi);
        recursiveFunction(jobs,...);
        jobs.insert(i,ii);
    }
}
Run Code Online (Sandbox Code Playgroud)

正如我所发现的,任何指向被擦除位置的指针都是无效的,所以 i 是无效的。有没有办法以这种方式重新插入工作编号?如果没有每次递归创建新列表的性能影响?

也许有没有办法使用列表迭代器以外的其他东西?

c++ iterator list insert erase

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

erase ×1

insert ×1

iterator ×1

list ×1