栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++边学边记 02 resize() 与 reserve()的区别

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++边学边记 02 resize() 与 reserve()的区别

c++边学边记 02 resize() 与 reserve()的区别

参考链接:C++中resize和reserve的区别

在使用STL时常常会把resize() 和 reserve()函数弄混,严重时会导致程序出现错误。
在解释这两个函数之前需要介绍容器的capacity和size之间的区别:

  1. capacity:指容器能够容纳的最大的元素的个数;
  2. size:指此时容器实际的元素个数。

就比如我有一个容量为300ml的水杯,里面现在装的水是200ml。意思是它最多能装300ml,只不过现在只是装了200ml。此时capacity为300, size为200。 所以reserve()是设置capacity的值,但是此时容器内还没有任何对象,不能通过下标访问。 而resize()是设置size的值,既分配了空间,也创建了对象(如果没有指定参数,系统调用默认构造函数),可以通过下标访问。
如下例子:

#include 
#include 
#include 

using namespace std;


void demo_reserve(){
    cout << " demo_reserve() " < v;
    v.reserve(10);

    cout << "v.capacity: " << v.capacity() <
        cout << p << endl;
    }

}


void demo_resize(){

    cout << endl << " demo_resize() " < v;
    v.resize(10);

    cout << "v.capacity: " << v.capacity() < void{
        cout <

demo_reserve(); demo_resize(); return 0; }

输出:

 demo_reserve()
v.capacity: 10
v.size: 0

 demo_resize()
v.capacity: 10
v.size: 10
0
0
100
0
0
0
0
0
0
99
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/971128.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号