9-4 vector对象是如何增长的

image-20220223104824524

  • .size():容器中有多少元素
  • .capacity():不重新分配内存时,可容纳多少元素
  • .reserve(n):分配至少能容纳n个元素的内存
    • n>capacity时会分配使得capacity >= n
    • n<=capacity时什么也不做
  • image-20220223105758504

reserve()永远不会减少容器的内存空间;shrink_to_fit()也不能保证一定会被执行

int main(){
    vector<int> ivec;
    //size=0;capacity依赖具体实现
    cout<<" size = "<<ivec.size()
        <<" capacity = "<<ivec.capacity()<<endl;
    //向ivec添加24个元素
    for(int ix = 0; ix !=24; ++ix)
        ivec.push_back(ix);
    //size为24,capacity >= 24,具体值依赖实现
    cout<<" size = "<<ivec.size()
        <<" capacity = "<<ivec.capacity()<<endl;
    return 0;
}

image-20220223105708881

可以用reverse()预分配空间

int main(){
    vector<int> ivec;
    ivec.reserve(50);
    for(int ix = 0; ix != 24; ++ix)
        ivec.push_back(ix);
    cout<<" size = "<<ivec.size()
        <<" capacity = "<<ivec.capacity()<<endl;
    return 0;
}

image-20220223110040806

posted @   咪啪魔女  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示