vector之resize()和reserve()
程序员文章站
2022-03-21 20:37:44
...
首先必须弄清楚两个概念:
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只带一个参数,表示容器预留的大小。
使用贴近实际的比喻来解释:
正在建造的一辆公交车,车里面可以设置40个座椅(reserve(40);),这是它的容量,但并不是说它里面就有了40个座椅,只能说明这部车内部空间大小可以放得下40张座椅而已。而车里面安装了40个座椅(resize(40)????,这个时候车里面才真正有了40个座椅,这些座椅就可以使用了
推荐阅读
-
C++之 标准库类型 Vector和String
-
C++vector resize与reserve对比
-
C++STL之Vector向量详解,用法和例子 一起学习 一起加油
-
模拟实现vector类(完成四个构造,push_back,pop_back,insert,erase,resize,reserve,begin,end,capacity)
-
vector.resize 与 vector.reserve的区别
-
vector的resize和reserve的小研究
-
C++:vector中的resize()函数 VS reserve()函数
-
vector中resize()和reserve()区别
-
vector中resize与reserve的区别
-
C++容器——vector的reserve()和resize()踩坑记录