我的代码的基本结构是:
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 是无效的。有没有办法以这种方式重新插入工作编号?如果没有每次递归创建新列表的性能影响?
也许有没有办法使用列表迭代器以外的其他东西?