容器的resize()和reserve()用法

本文探讨了C++中vector容器的正确初始化方法。指出使用`reserve`仅分配内存而不初始化元素,不能直接用于`fill_n`。推荐使用`resize`来确保容器元素被正确初始化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下例中  vector<int> vec;

vec.resere(10);

fill_n(vec.begin(),10,0)  

是否有错呢?

表面上看,对容器vec设置了内存,好像可以满足fill_n的使用条件。但是,reserve只是分配内存而没有对vec进行初始化。故,错。

改正为:

 vector<int> vec;

vec.resize(10);

fill_n(vec.begin(),10,0)  

t.resize(n),若t的长度大于n,则将其截短至n;若t长度小于n,则用初始化值将长度补到n,故可以满足fill_n的容器必须初始化的要求。t.resize(n,m)则将新添加的元素初始化为值m。而对于t.reserve(n),则只是为t分配了内存,并没有对其进行初始化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值