c++ vector resize & reserve

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

1.capacity

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

2. size

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

 

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

 

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

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

 

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

 

#include <iostream>
#include <vector>
using namespace std;

int main(int argc, char *argv[])
{      
    vector <int> wgw;
    cout << "initilize size is: " << wgw.size() << endl;
    cout << "initilize capacity is :" << wgw.capacity() <<endl;
    wgw.reserve(100);
    cout << "wgw size is: " << wgw.size() << endl;
    cout << "wgw capacity is :" << wgw.capacity() <<endl;

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

    return 0;
}

 

3).两者的形参个数不一样。

   resize带两个参数,一个表示容器大小,一个表示初始值(默认为0)

   reserve只带一个参数,表示容器预留的大小。

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

1.capacity

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

2. size

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

 

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

 

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

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

 

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

 

#include <iostream>
#include <vector>
using namespace std;

int main(int argc, char *argv[])
{      
    vector <int> wgw;
    cout << "initilize size is: " << wgw.size() << endl;
    cout << "initilize capacity is :" << wgw.capacity() <<endl;
    wgw.reserve(100);
    cout << "wgw size is: " << wgw.size() << endl;
    cout << "wgw capacity is :" << wgw.capacity() <<endl;

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

    return 0;
}

 

3).两者的形参个数不一样。

   resize带两个参数,一个表示容器大小,一个表示初始值(默认为0)

   reserve只带一个参数,表示容器预留的大小。

猜你喜欢

转载自blog.csdn.net/Tommy_wxie/article/details/76998972
今日推荐