代码大概像这样:
list<int> foo;
void dfs (){
foo.erase (it );
dfs ();
foo.insert (it, last_value );
}
如果调用更深一些后, it 就变成野指针了,比如 list 长度是 3 , it 指向下标 1 ,如果两次释放后, it 相当于被释放掉了,之后再申请的话, it 已经找不到新元素的位置了,但因为递归是有还原操作的,所以我想 it 在这层递归完后,还能指向下标 1 ,请问这种怎么操作?
简单点做的话用 vector 并记录下标是可以的,只是删除操作不是 O (1 )