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

下例中  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分配了内存,并没有对其进行初始化。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
resize()函数是用来改变vector中的元素个数的,它有两个参数,分别是n和m。参数n表示vector的新的元素个数,参数m表示新添加的元素的初始化值,m可以省略。resize()函数有以下几种使用情况: 1. 当n小于当前vector的size时,resize()会将vector的size减小到n,并删除多余的元素。 2. 当n大于当前vector的size且小于vector的容量capacity时,resize()会将vector的size增加到n,并初始化新增的元素为m,如果m省略,则使用默认值。 3. 当n大于vector的容量capacity时,resize()会先增大vector的容量capacity到n,然后将新增的元素初始化为m,如果m省略,则使用默认值。此时,vector的size和capacity都会发生改变。 resize()函数常用于调整vector的大小和添加初始化元素。它可以使用多种方式调用,如clear()、push_back()、emplace_back()、pop_back()、front()、back()、size()、empty()、insert()、assign()、=(赋值为一个普通的数组)、[]、begin()和end()。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [vector容器resize()与reserve()的区别及用法](https://blog.csdn.net/dffffffff1/article/details/124245023)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [C++重构vector](https://download.csdn.net/download/weixin_68756152/87961116)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值