STL vector<>的工作原理

最后更新于 2025-08-02 19:48:33
作者
分类 算法·理论

我们都知道, STL里有一个好用的东西——vector<>。它最大的特点就是可以根据存储了多少变量来改变自身大小。但现在,问题来了:

它是怎么改变大小的呢?

首先,我们明白,它不可能是一个一个变量扩大的,这样常数太大了。那,它是怎么扩大的呢? 让我们来看一段代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
  vector<int> v;
  while(1){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
      v.push_back(1);
      cout<<v.size()<<endl;
    }
    
  }
  return 0;
}

如果你输入500 2000 40000这样的数据的话,你会发现,vector在创建出来的时候就有了500的空间,而接下来它的空间就变成了1000左右,而后是2000、4000、10000……

所以我们可以发现,vector的空间是指数式增长的!