You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++标准库<algorithms>操作是否存在迭代器失效规则?

C++20中vector的erase/erase_if与迭代器有效性

在C++20的vector中,erase和erase_if方法的效果分别基于remove和remove_if定义(对应标准条款[vector.erasure/1]):

效果:等价于:

auto it = remove(c.begin(), c.end(), value);
auto r = distance(it, c.end());
c.erase(it, c.end());
return r;

相关的容器要求条款可参考[container.reqmts/67]:

除非另有规定(明确规定或通过其他函数定义本函数),调用容器成员函数或向库函数传递容器参数,不得使容器内对象的迭代器失效或改变其值。

但目前找不到任何针对<algorithms>中操作(包括remove/remove_if)的迭代器相关明确规定。

内容的提问来源于stack exchange,提问作者klezki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 17:22:02