C++ vector中size/resize和capacity/reserve的区别

size:大小----resize重新确定大小

capacity:容量----reserve重新分配空间

size说明容器中目前实际存在多少元素,resize会在容器的尾部添加或者删除一些元素,来调整容器的大小使其达到指定的大小;

capcity说明至少添加多少元素才会使容器重新分配内存,而reserve在必要的时候会使容器内部缓冲区扩充至一个更大的容量,以确保至少能满足你所指出的空间大小。

vector<int> v;
v.reserve(2);
v[0]=1;
v[1]=2;
在本例中v.reserve(2)只是确保v中有空间能够放下至少两个元素,但是并没有真的为其分配地址空间,对v[0]、v[1]进行赋值是没有意义的,这些内存空间此时可能仍是‘野的’,代码并不能保证正常工作,如果v.resize(2)则可以实现预想的效果。解决这个问题可以使用v.push_back(1)和v.push_back(2)。

本文参考《C++编程剖析》Herb Sutter 著 刘未鹏 译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值