首页 > 解决方案 > vector::erase 是否会减少 vector::capacity?

问题描述

Cppreference 只说:

从容器中移除指定的元素。1) 移除 pos 处的元素。2) 删除范围内的元素 [first; 最后的)。

在擦除点处或之后使迭代器和引用无效,包括 end() 迭代器。

迭代器 pos 必须有效且可取消引用。因此 end() 迭代器(有效,但不可取消引用)不能用作 pos 的值。

如果 first==last,则迭代器 first 不需要可取消引用:擦除空范围是无操作的。

标签: c++vectorlanguage-lawyer

解决方案


不一定没有。在阅读 C++ 标准(并且 cppreference 非常好地代理标准)时,如果没有明确提及某些内容,则假设不需要这样的内容。

对于 C++ 标准库实现来说,这样做可能不是最佳的。


推荐阅读