我的代碼的基本結構是:更換項目++的std ::列表迭代器
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);
}
}
正如我發現,任何指針指向被擦除的位置是無效的,所以我失效。有沒有辦法以這種方式重新插入工作號碼?沒有創建新的列表每個遞歸的性能打擊?
有沒有辦法使用列表迭代器以外的東西,也許?
究竟是你想做些什麼?在我看來,你嘗試擦除一個元素,然後將它插入到曾經是 –
的地方。當使用'erase()'迭代時,你必須使用函數的返回值來進一步迭代。 – Mario
在遞歸調用之後,迭代器i被腐蝕掉,所以爲什麼不使用push_back而不是insert? –