c++ vector resize & reserve

首先必须弄清楚两个概念:

1.capacity

     指容器在分配新的存储空间之前能存储的元素总数。

2. size

     指当前容器所存储的元素个数

在弄清这两个概念以后,很容易懂resize和reserve的区别

 

1).reserve表示容器预留空间,但并不是真正的创建对象,需要通过insert()或push_back()等创建对象。

resize既分配了空间,也创建了对象。

 

2).reserve只修改capacity大小,不修改size大小,resize既修改capacity大小,也修改size大小。

void TestVector(){
    vector <int> wgw;
    cout << "initilize size is: " << wgw.size() << endl;
    cout << "initilize capacity is :" << wgw.capacity() <<endl;
    wgw.reserve(10);
    cout << "wgw size is: " << wgw.size() << endl;
    cout << "wgw capacity is :" << wgw.capacity() <<endl;

    vector <int>wgw1;
    wgw1.resize(20);
    cout << "wgw1 size is :" << wgw1.size()<<endl;
    cout << "wgw1 capacity is:" << wgw1.capacity() <<endl;

    wgw1.push_back(1);
    cout << "wgw1 size is :" << wgw1.size()<<endl;
    cout << "wgw1 capacity is:" << wgw1.capacity() <<endl;

    wgw1.pop_back();
    cout << "wgw1 size is :" << wgw1.size()<<endl;
    cout << "wgw1 capacity is:" << wgw1.capacity() <<endl;

    wgw1.resize(21);
    cout << "wgw1 size is :" << wgw1.size()<<endl;
    cout << "wgw1 capacity is:" << wgw1.capacity() <<endl;

    wgw1.resize(1);
    cout << "wgw1 size is :" << wgw1.size()<<endl;
    cout << "wgw1 capacity is:" << wgw1.capacity() <<endl;

    wgw1.reserve(1);
    cout << "wgw1 size is :" << wgw1.size()<<endl;
    cout << "wgw1 capacity is:" << wgw1.capacity() <<endl;

    wgw1.reserve(100);
    cout << "wgw1 size is :" << wgw1.size()<<endl;
    cout << "wgw1 capacity is:" << wgw1.capacity() <<endl;
}

 

 

Erase与Size与capacity的关系。。。

void TestEraseVector()
{
    unsigned int i;
    vector<unsigned int> myvector;

    // set some values (from 1 to 10)
    for (i=1; i<=10; i++) myvector.push_back(i);
    
    //show01
    cout << "size is: "<< myvector.size() << endl;
    cout << "capacity is:" << myvector.capacity() << endl;

    // erase the 6th element
    myvector.erase (myvector.begin()+5);

    // erase the first 3 elements:
    myvector.erase (myvector.begin(),myvector.begin()+3);

    cout << "myvector contains:";
    for (i=0; i<myvector.size(); i++)
        cout << " " << myvector[i];
    cout << endl;
    //show02
    cout << "size is: "<< myvector.size() << endl;
    cout << "capacity is:" << myvector.capacity() << endl;

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值