admin管理员组

文章数量:1611972

系统是CentOS 7,不同系统的capacity翻倍策略会有些不一样,这里是2倍
说明都在代码中的注释里

//
// Created by Aaj on 2021/9/11.
//

#include <bits/stdc++.h>
using namespace std;
int main(){
    //size是当前vector中的元素个数,capacity是vector当前可容纳的元素个数
    //当使用push_back等操作使得size超过capacity后,capacity会翻倍,原先的2倍
    //resize会更改size大小,若size超过capacity则capacity变为和size一样的值
    //reserve会更改capacity大小,若更改后capacity小于size,那么capacity保留原来的值,不发生更改,capacity只会增大不减小
    vector<int> v;
    cout<<"开始:"<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
    v.push_back(1);
    cout<<"追加1:"<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
    v.push_back(2);
    cout<<"追加2:"<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
    v.push_back(3);
    cout<<"追加3:"<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
    v.push_back(4);
    cout<<"追加4:"<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
    v.push_back(5);
    cout<<"追加5:"<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;

    //使用resize修改size,若修改的size小于capacity,capacity不变
    v.resize(2);
    cout<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;

    //使用resize修改size,若修改的size大于capacity,capacity变为和size一样的值
    v.resize(50);
    cout<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
    v.resize(100);
    cout<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;

    v.push_back(101);
    cout<<"追加101:"<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;

    //使用reserve修改capacity,若修改后的capacity小于size,capacity不变
    v.reserve(4);
    cout<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;

    //使用reserve修改capacity,若修改后的capacity大于size且大于原先的capacity,capacity改变
    v.reserve(50);
    cout<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;//capacity不变
    v.reserve(300);
    cout<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;//capacity改变

    //使用reserve修改capacity,若修改后的capacity大于size且小于原先的capacity,capacity不变
    //说明capacity只会增大不会减少
    v.resize(10);
    cout<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;
    v.reserve(11);
    cout<<"size: "<<v.size()<<" capacity: "<<v.capacity()<<endl;

    return 0;
}

运行结果:

本文标签: 区别sizeVectorCapacityreserve