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

插入元素后std::vector的容量是否会增加?

关于std::vector插入元素后容量变化的问题解答

嘿,刚上手C++实验的话,std::vector的容量变化确实是个容易搞混的点,我来结合你的代码给你掰扯清楚~

首先得明确两个关键概念:

  • size:vector当前实际存储的元素数量
  • capacity:vector当前分配的内存能容纳的最大元素数量(不用重新分配内存的情况下)

当你插入元素时,只有当插入后的size超过当前的capacity时,vector才会触发扩容——也就是重新分配一块更大的内存空间,把原有元素拷贝过去,这时候capacity才会增加。如果插入后size还在capacity范围内,那容量不会有变化。

咱们来看你的代码:

#include <iostream>
#include <vector>
int main() {
    std::vector<int> v;
    std::cout << "Capacity of v is " << v.capacity() << '\n';
    v.resize (100);
    std::cout << "Capacity of v after resize is " << v.capacity() << '\n';
    v.insert (v.begin(), 2);
    std::cout << "Capacity of v after insert is " << v.capacity() << '\n';
}

代码执行过程拆解:

  1. 初始状态:空vector,size=0,capacity=0(大部分编译器的默认行为),所以第一个输出是Capacity of v is 0。
  2. 执行v.resize(100):这个操作会把vector的size设置为100,因为原来没有足够空间,vector会分配能容纳100个元素的内存,所以capacity变成100,第二个输出是Capacity of v after resize is 100。
  3. 执行v.insert(v.begin(), 2):插入后size变成101,这已经超过了当前的capacity=100,所以vector会触发扩容。不同编译器的扩容策略略有不同(比如GCC通常是扩容到原来的1.5倍,MSVC是2倍),所以第三个输出可能是150或者200,总之容量肯定会增加。

总结一下:

插入元素后std::vector的容量不一定会增加——只有当插入后的元素总数超过当前容量时,才会触发扩容,容量才会变大。你的代码刚好触发了这个场景,所以容量会增加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:33:06