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

news/2024/10/9 13:33:51/

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 100vct.reserve(150);cout << vct.size() << " " << vct.capacity() << endl;//50 150vct.resize(100);cout << vct.size() << " " << vct.capacity() << endl;//100 150vct.reserve(50);cout << vct.size() << " " << vct.capacity() << endl;//100 150return 0;
}

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


http://www.ppmy.cn/news/1474376.html

相关文章

在攻防演练中遇到的一个“有马蜂的蜜罐”

在攻防演练中遇到的一个“有马蜂的蜜罐” 有趣的结论&#xff0c;请一路看到文章结尾 在前几天的攻防演练中&#xff0c;我跟队友的气氛氛围都很好&#xff0c;有说有笑&#xff0c;恐怕也是全场话最多、笑最多的队伍了。 也是因为我们遇到了许多相当有趣的事情&#xff0c;其…

单端口RAM

目录 描述 输入描述&#xff1a; 输出描述&#xff1a; 参考代码 描述 题目描述&#xff1a; 设计一个单端口RAM&#xff0c;它有&#xff1a; 写接口&#xff0c;读接口&#xff0c;地址接口&#xff0c;时钟接口和复位&#xff1b;存储宽度是4位&#xff0c;深度128。…

Drools开源业务规则引擎(六)- Drools Flow中RuleFlow文件即*.rf文件介绍

文章目录 Drools开源业务规则引擎&#xff08;六&#xff09;- RuleFlow文件即*.rf文件介绍1.\<header>1.1.\<imports>a.标签格式b.属性说明c.示例代码 1.2.\<globals>a.标签格式b.属性说明c.示例代码 1.3.\<functionImports>a.标签格式b.属性说明c.示…

Flink ui 本地flink ui 报错 {“errors“:[“Not found: /“]}

在学习flink 的过程中&#xff0c;伊始的flink 版本是1.17.2 报题目的错误 &#xff0c;百思不得其解&#xff0c;尝试更替了1.19.1 然后就成功了 &#xff0c;期间未做任何的修改 。 ui 默认地址 &#xff1a; http://localhost:8081 pom 文件 如下 <?xml version&qu…

MySQL安全值守常用语句

一、用户权限设置 1、Mysql中用户是如何定义的 用户名主机域 10.0.0.5110.0.0.%%10.0.0.0/255.255.255.0Db01Localhost127.0.0.1 2、用户创建 create user xinjing% identified by 123 3、用户删除 drop user username&#xff1b;username 是要删除的用户名:如 drop user root…

XSS 攻击是什么?如何防护?

1. 什么是 XSS 攻击 跨站脚本攻击&#xff0c;是一种很常见的网络安全威胁。 它允许攻击者在目标浏览器中注入恶意脚本代码。这些恶意脚本会执行多种非法操作。比如盗取你的 cookie&#xff0c;会话信息&#xff0c;篡改网页内容&#xff0c;重定向到别的恶意网站。控制浏览器…

k8s学习之cobra命令库学习

1.前言 打开k8s代码的时候&#xff0c;我发现基本上那几个核心服务都是使用cobra库作为命令行处理的能力。因此&#xff0c;为了对代码之后的代码学习的有比较深入的理解&#xff0c;因此先基于这个库写个demo&#xff0c;加深对这个库的一些理解吧 2.cobra库的基本简介 Git…

el-dropdown的command方法添加自定义参数

代码 <div v-for"(item, index) in queryParams.changeParams" :key"index"><el-form-item prop"dataConditionSearch"><el-dropdown command"handleCommand" style"margin-right: 3px;"><span class…