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 @ 2022-02-23 11:37  Miaops  阅读(35)  评论(0)    收藏  举报