admin管理员组文章数量:1611937
前言
在介绍resize(),reserve(),size()和capacity()函数之前,先简单介绍一下c++中vector的概念。
vector:顺序容器(可变大小数组)。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢。
既然vector是个容器,那么一定相关特性,如添加元素、删除元素和查询容器大小等操作。本文重点介绍vector中的resize(),reserve(),size()和capacity()函数。
基本概念
capacity
指容器在分配新的存储空间之前能存储的元素总数。
size
指当前容器所存储的元素个数
注:capacity是容器可存储的最大总数,size是当前容器存储的个数。还不理解,看我画的图(画风虽怪,但言简意赅)。
- resize
既分配了空间,也创建了对象。
这里空间就是capacity,对象就是容器中的元素。
- reserve
reserve()表示容器预留空间,但不是真正的创建对象,需要通过insert()或push_back()等操作创建对象。
其实size()和capacity()没有更多需要介绍的地方,大家平时coding时直接调用即可。当然size()的使用频率相当高,通常进行遍历操作时,最外层的for循环的次数即为size()。
resize和reverse
区别
- reserve()只修改capacity大小,不修改size大小,
- resize()既修改capacity大小,也修改size大小。
代码实例
代码解析
操作1
vector<int> v1;
vector<int> v2;
vector<int> v3;
vector<int> v4;
创建4个空容器,让我们看看此时size和capacity的情况:
cout << "v1_size: " << v1.size() << "\t vl_capacity: " << v1.capacity()<<endl;
cout << "v2_size: " << v2.size() << "\t v2_capacity: " << v2.capacity() << endl;
cout << "v3_size: " << v3.size() << "\t v3_capacity: " << v3.capacity() << endl;
cout << "v4_size: " << v4.size() << "\t v4_capacity: " << v4.capacity() << endl << endl;
输出结果为:
v1_size: 0 , vl_capacity: 0
v2_size: 0 , v2_capacity: 0
v3_size: 0 , v3_capacity: 0
v4_size: 0 , v4_capacity: 0
看来刚创建的空容器,size和capacity是一致的。
操作2
这里补充个很有意思的小实验。我们给空容器v2添加一个元素,观察此时的size和capacity
本文标签: 函数resizeVectorreserveCapacity
版权声明:本文标题:C++ vector中的resize,reserve,size和capacity函数讲解 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1728619575a1166176.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论