代码大概像这样:
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 )
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.