【发布时间】:2020-09-21 07:52:26
【问题描述】:
以下代码运行良好:
auto it = vec.insert(vec.begin(), vec.begin(), vec.begin()+i);
vec.erase(it+i, vec.end());
但这会产生malloc: corrupted top size 错误:
vec.erase(vec.insert(vec.begin(), vec.begin(), vec.begin()+i)+i, vec.end());
为什么会发生这种情况,有什么办法可以解决这个错误?
主要问题是,当两者都在同一个向量上操作时,我可以将 insert() 的结果传递给 erase() 吗?
【问题讨论】:
-
您真正想要实现什么?请添加示例
-
擦除删除 idom 起作用的原因是因为
remove实际上并没有从容器中删除元素。另一方面,insert确实将元素插入到容器中 -
这段代码让我的蜘蛛感觉很刺痛,请不要...
-
第一个可能看起来工作得很好,但如果重新分配,所有
insert的参数都将变为无效。您无法通过测试来确定不存在未定义的行为。