vector中的capactiy 与size

3 篇文章 0 订阅

vector中的size表示什么?capacity有表示什么?有什么区别,他们是怎么增长的

 

size 其实表示的实际的数据的多少,而capacity表示的为了能够接收这些数据,vector所开的空间。

就向我们生成了一个100个int类型的数组,而实际上就存放了10个数字,则100就是capacity,10就是size;

 

但是他们是怎么样增加的呢?是capacity是在什么时候增长的呢?,他增长的又是多少呢?

我做了个实验,在windows xp上 VC6

 

 

#include <iostream>
#include <vector>
using namespace std;
int main()
{
 //size is 实际的大小
 //capacity 是vector 所能容纳数据的空间大小,一般是动态增长的
 vector<int> vec;
 cout<<"the vec size is" <<vec.size()<<endl;
 cout<<"the vec caption is "<<vec.capacity()<<endl;
 
 for (int i=1;i<100;i++)
 {
  vec.push_back(i);
  cout<<"the vec size is "<<vec.size()<<endl;
 cout<<"the vec caption is "<<vec.capacity()<<endl;
 }
 
  
 return 0;
}

 

实际的数据我们看到,他是在插入数据的时候,根据size的情况和当然要插入的数据的容量大小来动态增长的,但是主要的我们看到,他增长的是有规律的,就是在2的倍数上增长的,如1,2,4.。。128 增长的,当size的大小已经等于capacity的时候,就动态以2的倍数的增长。因此可以想到,在push_back的时候,系统进行了SIZE和capacity的大小的比较。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值