【C++中resize和reserve的区别】

1. resize的用法

改变当前容器内含有元素的数量(size())比如:

vector<int> vct;

int num = vct.size();//之前的元素个数为num
vct.resize(len);//现在的元素个数为len

如果num < len ,那么容器vct新增len - num个元素,元素的值默认为0;
若再对vct进行插入,如:

vct.push_back(1);//此时将1插入到vct末尾,其下标就为len,容器的容量变为len +1

2. reserve的用法

改变当前容器的最大容量(capacity),不会生成元素,只是确认这个容器允许放入多少对象,如果reserve(len)的值大于当前的capacity(),那么会重新分配一块能存len个元素的空间,然后把之前的vct.size()个元素通过copy construtor复制过来,销毁之前的内存。

3. 代码实现

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

int mian(){
    vector<int> vct;
    
    vct.reserve(100);
    vct.resize(50);
    cout << vct.size() << " " << vct.capacity() << endl;//50 100
    
    vct.reserve(150);
    cout << vct.size() << " " << vct.capacity() << endl;//50 150

    vct.resize(100);
    cout << vct.size() << " " << vct.capacity() << endl;//100 150

    vct.reserve(50);
    cout << vct.size() << " " << vct.capacity() << endl;//100 150
    return 0;
}

发现在进行了vct.reserve(150)之后,再将reserve()参数设置为比150小的,不发生变化,说明如果新的容量比原来的容量小,reserve()函数不会做任何事情。

相关推荐

  1. C++resizereserve区别

    2024-07-11 05:00:03       22 阅读
  2. Pytorchresizereshape

    2024-07-11 05:00:03       51 阅读
  3. C++using typedef 区别

    2024-07-11 05:00:03       34 阅读
  4. C# == Equals 区别

    2024-07-11 05:00:03       33 阅读
  5. C++ DebugRelease区别

    2024-07-11 05:00:03       22 阅读
  6. C++】C++栈介绍区别

    2024-07-11 05:00:03       23 阅读
  7. Objective-Cnilnull区别

    2024-07-11 05:00:03       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 05:00:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 05:00:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 05:00:03       58 阅读
  4. Python语言-面向对象

    2024-07-11 05:00:03       69 阅读

热门阅读

  1. 音频基础知识

    2024-07-11 05:00:03       23 阅读
  2. SQL 索引

    2024-07-11 05:00:03       20 阅读
  3. docker自定义镜像

    2024-07-11 05:00:03       19 阅读
  4. IDEA Plugins 网络异常解决办法

    2024-07-11 05:00:03       17 阅读
  5. python3记录拨号光纤公网IP

    2024-07-11 05:00:03       19 阅读
  6. uniapp小程序使用webview 嵌套 vue 项目

    2024-07-11 05:00:03       24 阅读
  7. iOS 开发中,异步渲染和异步绘制

    2024-07-11 05:00:03       19 阅读
  8. 请求被中止: 未能创建 SSL/TLS 安全通道

    2024-07-11 05:00:03       22 阅读
  9. 【LeetCode】字母异位词分组

    2024-07-11 05:00:03       21 阅读
  10. mybatis-plus树递归结构

    2024-07-11 05:00:03       22 阅读