ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++ reserve和resize的区别

2022-07-13 16:01:02  阅读:162  来源: 互联网

标签:std 容器 capacity cout 元素 C++ size resize reserve


前置知识:

capacity是指容器的容量,指该容器如果不重新分配内存,最多只能容纳capacity个元素。

size是指容器中当前存在的元素个数。

capacity和size的关系:size <= capacity

 

reserve(n)是指为容器至少预分配n * sizeof(元素)的容量。如果分配的n<size,则不会起作用。

    std::vector<int> a(11);
    std::cout << a.size() << ' ' << a.capacity() << std::endl;//输出:11 11
    a.reserve(10);
    std::cout << a.size() << ' ' << a.capacity() << std::endl;//输出:11 11
    a.push_back(1); 
    std::cout << a.size() << ' ' << a.capacity() << std::endl;//输出:12 16
    a.reserve(17);
    std::cout << a.size() << ' ' << a.capacity();//输出:12 17

resize(n)是指采用无参(默认)构造函数,将容器中的元素数量扩展或缩减至n。如果capacity<n,则重新分配容器空间,使capacity>=n。

    std::vector<int> a(11);
    std::cout << a.size() << ' ' << a.capacity() << std::endl;//输出:11 11
    a.push_back(1); 
    std::cout << a.size() << ' ' << a.capacity() << std::endl;//输出:12 16
    a.resize(17);
    std::cout << a.size() << ' ' << a.capacity();//输出:17 24

(以上均为Visual Studio2019,c++ 14标准下的测试结果)

标签:std,容器,capacity,cout,元素,C++,size,resize,reserve
来源: https://www.cnblogs.com/mshentaiBlog/p/16474193.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有