Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
C++STL容器resize和reserve使用技巧_创想鸟

C++STL容器resize和reserve使用技巧

resize()改变容器元素数量并可能触发内存分配,而reserve()仅预分配内存不改变元素个数;前者用于初始化元素,后者用于提升插入性能,合理使用可优化内存管理与程序效率。

c++stl容器resize和reserve使用技巧

在使用C++ STL容器(尤其是 std::vector)时,resize() 和 reserve() 是两个常用但容易混淆的函数。它们的作用完全不同,理解它们的差异并合理使用,对性能优化和内存管理至关重要。

resize():改变容器中元素的数量

resize() 会实际改变容器中元素的个数。调用后,容器的 size() 会改变。

• 如果新大小大于当前 size,容器会在末尾添加默认构造的元素(或指定值)。
• 如果新大小小于当前 size,多余的元素会被删除(析构函数会被调用)。
• 它可能会触发内存重新分配,但这不是它的主要目的。

示例:

std::vector vec;
vec.resize(5); // vec 包含 5 个元素,值为 0
vec.resize(3); // vec 现在只有前 3 个元素,size 变为 3

reserve():预分配内存,不改变元素数量

reserve() 只改变容器的 capacity(),即预分配足够的内存空间,但不会改变 size()。它用于避免频繁的内存重新分配。

立即学习“C++免费学习笔记(深入)”;

• 调用后,size 不变,但 capacity 可能增加。
• 不构造或析构任何元素。
• 当你知道将要添加大量元素时,提前 reserve 可显著提升性能。

示例:

std::vector vec;
vec.reserve(1000); // 分配可容纳 1000 个 int 的内存
// 此时 vec.size() == 0, vec.capacity() >= 1000

使用技巧与注意事项

合理使用这两个函数,可以避免不必要的性能开销。

• 频繁 push_back 时,先 reserve 再插入,避免多次 realloc 和拷贝。
• 如果你需要初始化一堆默认值,用 resize;如果只是预留空间,用 reserve。
• resize 后可以直接通过下标访问新元素,reserve 后不能直接访问(需 push_back 或 resize)。
• reserve 不减少内存(标准未要求),如需缩容可使用 swap 技巧或 shrink_to_fit(C++11)。

基本上就这些。搞清 size 和 capacity 的区别,就能用好 resize 和 reserve。不复杂但容易忽略。

以上就是C++STL容器resize和reserve使用技巧的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1474456.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
C++如何实现模板与STL容器结合
上一篇 2025年12月18日 21:36:01
C++并发编程 thread基本使用方法
下一篇 2025年12月18日 21:36:17

相关推荐

  • 淘宝引流款与爆款,核心差异及选择指南有哪些?核心差异深度拆解+实战选择指南,助你精准布局店铺商品!

    淘宝引流款与爆款,核心差异及选择指南有哪些?核心差异深度拆解+实战选择指南,助你精准布局店铺商品!淘宝引流款与爆款,核心差异及选择指南有哪些?核心差异深度拆解+实战选择指南,助你精准布局店铺商品!淘宝引流款与爆款,核心差异及选择指南有哪些?核心差异深度拆解+实战选择指南,助你精准布局店铺商品!淘宝引流款与爆款,核心差异及选择指南有哪些?核心差异深度拆解+实战选择指南,助你精准布局店铺商品!

    在当前竞争日益激烈的淘宝电商环境中,想要让店铺脱颖而出,科学的商品布局至关重要。其中,引流款与爆款的合理设置尤为关键。然而,不少卖家常常将两者混为一谈。只有真正理解它们的本质区别,并掌握正确的选品策略,才能有效提升店铺流量与转化率。 一、淘宝引流款与爆款的本质区别 (一)定位与功能不同 1. 引流款…

    2026年9月26日 • 用户投稿
    100
  • 淘宝88vip生活卡和购物卡哪个更好?它们有什么区别呢?淘宝88VIP生活卡VS购物卡深度解析:看完这篇不再选错

    淘宝88vip生活卡和购物卡哪个更好?它们有什么区别呢?淘宝88VIP生活卡VS购物卡深度解析:看完这篇不再选错淘宝88vip生活卡和购物卡哪个更好?它们有什么区别呢?淘宝88VIP生活卡VS购物卡深度解析:看完这篇不再选错淘宝88vip生活卡和购物卡哪个更好?它们有什么区别呢?淘宝88VIP生活卡VS购物卡深度解析:看完这篇不再选错淘宝88vip生活卡和购物卡哪个更好?它们有什么区别呢?淘宝88VIP生活卡VS购物卡深度解析:看完这篇不再选错

    一、基础权益大比拼:使用场景决定选择方向 1.1 生活卡主打本地生活全覆盖 涵盖多项高频生活服务,年度权益价值突破800元,主要包括: 饿了么全年会员资格(市价约120元)淘票票年度观影特权(每月赠送4张优惠券)高德地图打车月卡(每月4张5元抵扣券)希尔顿或万豪连锁酒店银卡会籍,享受快速升级与房型升…

    2026年9月26日 • 用户投稿
    000
  • 别再浪费纸了!一文掌握“双面打印”的正确姿势

    别再浪费纸了!一文掌握“双面打印”的正确姿势别再浪费纸了!一文掌握“双面打印”的正确姿势别再浪费纸了!一文掌握“双面打印”的正确姿势别再浪费纸了!一文掌握“双面打印”的正确姿势

    你是否也曾为家中或办公室里堆积如山的废纸感到惋惜? 你是否在打印一份几十页的报告时,默默看着打印机“哗哗”吐出厚厚一叠纸张,心里泛起一丝浪费的不安? 其实,你距离成为一位高效、节约又环保的打印高手,只差一个“双面打印”的操作。 别再用“不会设置”、“太麻烦”当作借口,让纸张白白流失。 今天,我们就来…

    2026年9月26日 • 用户投稿
    1500
  • 服务发现组件 Eureka 和 Nacos 有什么区别?

    服务发现组件 Eureka 和 Nacos 有什么区别?服务发现组件 Eureka 和 Nacos 有什么区别?服务发现组件 Eureka 和 Nacos 有什么区别?服务发现组件 Eureka 和 Nacos 有什么区别?

    Eureka 侧重服务注册与发现,适合简单场景;Nacos 功能更全,支持配置管理、动态更新与高扩展性,适用于复杂微服务架构。选择需根据技术栈、项目规模及未来扩展需求权衡,Nacos 在大型项目中更具优势。 Eureka 和 Nacos 都是服务发现组件,核心作用都是让服务能够被其他服务找到并调用。…

    2026年9月26日 • 用户投稿
    000
  • 浅谈 Windows 桌面端触摸架构演进

    浅谈 Windows 桌面端触摸架构演进浅谈 Windows 桌面端触摸架构演进浅谈 Windows 桌面端触摸架构演进浅谈 Windows 桌面端触摸架构演进

    我在和小伙伴水触摸相关的坑,说到了上古的触摸,很难和小伙伴统一知识,于是就写了本文用于告诉大家,桌面端的触摸架构是如何一步步演进的 所有触摸架构都建立在系统之上,和系统版本相关。所以可以通过系统划分。虽然说是触摸架构,但是我能知道的也就是应用层面的接口和编程方法,如果是小伙伴被标题吸引过来的,想看触…

    2026年9月26日 • 用户投稿
    200
  • 一篇文章带你深入了解Flink SQL流处理中的特殊概念

    一篇文章带你深入了解Flink SQL流处理中的特殊概念一篇文章带你深入了解Flink SQL流处理中的特殊概念一篇文章带你深入了解Flink SQL流处理中的特殊概念一篇文章带你深入了解Flink SQL流处理中的特殊概念

    本文深入探讨了flink sql流处理中的特殊概念,主要包括表与流处理的区别、动态表的概念以及流式持续查询的过程。以下是详细介绍。 一、流处理和关系代数(表,及 SQL)的区别 可以看出,关系代数(主要指关系型数据库中的表)和 SQL 主要针对批处理,这与流处理存在天然的差异。 二、动态表(Dyna…

    2026年9月26日 • 用户投稿
    100
  • CountDownLatch, CyclicBarrier, Semaphore 的使用场景与区别

    CountDownLatch, CyclicBarrier, Semaphore 的使用场景与区别CountDownLatch, CyclicBarrier, Semaphore 的使用场景与区别CountDownLatch, CyclicBarrier, Semaphore 的使用场景与区别CountDownLatch, CyclicBarrier, Semaphore 的使用场景与区别

    CountDownLatch用于主线程等待其他线程完成操作,CyclicBarrier用于多线程相互等待至屏障点后集体执行,Semaphore用于控制并发访问资源的线程数量。 CountDownLatch, CyclicBarrier, Semaphore 都是并发编程中用于线程同步的工具,但它们的…

    2026年9月26日 • 用户投稿
    500
  • 请描述Java的内存区域(运行时数据区)

    请描述Java的内存区域(运行时数据区)请描述Java的内存区域(运行时数据区)请描述Java的内存区域(运行时数据区)请描述Java的内存区域(运行时数据区)

    Java运行时数据区分为程序计数器、Java虚拟机栈、本地方法栈、Java堆和方法区,其中堆和方法区为线程共享,其余为线程私有;程序计数器记录线程执行位置,虚拟机栈管理方法调用的栈帧,本地方法栈服务Native方法,堆存放对象实例并由GC管理,方法区存储类元数据和常量池;JDK 8后方法区由元空间替…

    2026年9月26日 • 用户投稿
    100
  • DeepSeek能做代码生成吗 使用DeepSeek进行编程任务的能力测试

    DeepSeek能做代码生成吗 使用DeepSeek进行编程任务的能力测试DeepSeek能做代码生成吗 使用DeepSeek进行编程任务的能力测试DeepSeek能做代码生成吗 使用DeepSeek进行编程任务的能力测试DeepSeek能做代码生成吗 使用DeepSeek进行编程任务的能力测试

    本文将探讨名为DeepSeek的语言模型在代码生成领域的表现。针对“DeepSeek能做代码生成吗?”这一问题,我们将阐述其在编程任务上的能力,并模拟进行一次能力测试的描述,帮助读者了解DeepSeek作为编程助手的潜力及其适用场景。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量…

    2026年9月26日 • 用户投稿
    200
  • 检查型异常(Checked Exception)和非检查型异常(Unchecked Exception)的区别?

    检查型异常(Checked Exception)和非检查型异常(Unchecked Exception)的区别?检查型异常(Checked Exception)和非检查型异常(Unchecked Exception)的区别?检查型异常(Checked Exception)和非检查型异常(Unchecked Exception)的区别?检查型异常(Checked Exception)和非检查型异常(Unchecked Exception)的区别?

    检查型异常由编译器强制处理,代表可预期的外部问题,如文件不存在;非检查型异常为运行时异常,通常由程序逻辑错误引起,编译器不强制捕获。前者需显式处理或声明,体现健壮性设计;后者应通过预防避免,体现“快速失败”原则。自定义异常时,若调用方可恢复或需处理,应继承Exception;若为内部错误,则继承Ru…

    2026年9月26日 • 用户投稿
    100
  • synchronized 关键字的实现原理是什么?它是如何保证线程安全的?

    synchronized 关键字的实现原理是什么?它是如何保证线程安全的?synchronized 关键字的实现原理是什么?它是如何保证线程安全的?synchronized 关键字的实现原理是什么?它是如何保证线程安全的?synchronized 关键字的实现原理是什么?它是如何保证线程安全的?

    synchronized 是 Java 中保证线程安全的核心机制,其本质是通过 JVM 内置的 Monitor(监视器)实现互斥访问。当多个线程竞争同步资源时,synchronized 依靠对象头中的 Mark Word 和锁升级机制(偏向锁 → 轻量级锁 → 重量级锁)动态调整锁的实现方式,以平衡…

    2026年9月26日 • 用户投稿
    200
  • 医院处方颜色分类解析

    医院处方根据用途的不同被划分为多种类型,常见的包括门诊处方、急诊处方以及特殊管理药品处方。为了便于识别与管理,各类处方所使用的纸张颜色各不相同,例如普通处方为白色,急诊处方为淡黄色,麻醉类药品处方则为淡红色等。 1、 普通处方使用白色印刷用纸,无特殊标识。 2、 急诊处方采用淡黄色纸张,右上角明确标…

    2026年9月26日
    200
  • Java 8中的Stream API有哪些常用操作?它是惰性求值的吗?

    Java 8中的Stream API有哪些常用操作?它是惰性求值的吗?Java 8中的Stream API有哪些常用操作?它是惰性求值的吗?Java 8中的Stream API有哪些常用操作?它是惰性求值的吗?Java 8中的Stream API有哪些常用操作?它是惰性求值的吗?

    答案:Java 8的Stream API通过中间操作和终端操作实现惰性求值,提升性能与代码可读性。中间操作如filter、map返回新流且惰性执行,终端操作如forEach、collect触发计算并产生结果。惰性求值避免不必要的计算,支持短路操作,优化管道处理,适用于无限流。使用时需避免副作用、重复…

    2026年9月26日 • 用户投稿
    200
  • MAC如何设置动态壁纸_macOS设置动态桌面与视频壁纸

    MAC如何设置动态壁纸_macOS设置动态桌面与视频壁纸MAC如何设置动态壁纸_macOS设置动态桌面与视频壁纸MAC如何设置动态壁纸_macOS设置动态桌面与视频壁纸MAC如何设置动态壁纸_macOS设置动态桌面与视频壁纸

    首先启用系统自带动态桌面,进入“系统设置”>“墙纸”,选择“动态”类别并预览应用;其次可通过HEIC格式Live Photo设为动态壁纸,需从iPhone同步后导出原片并拖入墙纸设置;若想使用视频壁纸,则需借助Wallpaper Engine等第三方工具导入视频并设为背景;最后高级用户可编写A…

    2026年9月26日 • 用户投稿
    000
  • 苹果wapi启动与不启动的区别

    苹果wapi启动与不启动的区别苹果wapi启动与不启动的区别苹果wapi启动与不启动的区别苹果wapi启动与不启动的区别

    启动 WAPI 增强安全性,支持 WAPI 加密网络连接,而关闭 WAPI 兼容性更广,安全性稍弱。 苹果 WAPI 启动与不启动的区别 主要区别: 连接能力: 启动 WAPI:支持 WAPI 网络连接,能够访问使用 WAPI 加密技术的无线网络。不启动 WAPI:不支持 WAPI 连接,无法访问仅…

    2026年9月26日 • 用户投稿
    100
  • 如何在Java中使用protected修饰符

    protected成员可在同类、同包及其他包的子类中访问,主要用于继承;子类不能通过父类实例访问其protected成员,只能继承访问。 在Java中,protected 是一种访问修饰符,用于控制类成员(字段、方法、构造器或内部类)的可见性。它比 private 更宽松,但比 public 更严格…

    2026年9月26日
    200
  • Z790主板比B760主板强在哪里?

    Z790主板相比B760在超频支持、供电能力与扩展性上更强。1. Z790支持带“K”后缀CPU超频,B760不支持;2. Z790供电模组更豪华,散热设计更强,可应对高功耗CPU长时间满载;3. Z790拥有8条DMI通道,扩展接口更丰富,支持更多高速设备;4. Z790对高频内存支持更好,内存超…

    2026年9月26日
    200
  • 从 0 开始学 V8 漏洞利用之 V8 通用利用链(二)

    作者:hcamael@知道创宇404实验室 相关阅读:从 0 开始学 V8 漏洞利用之环境搭建(一)经过一段时间的研究,先进行一波总结,不过因为刚开始研究没多久,也许有一些局限性,以后如果发现了,再进行修正。 概述 ‍我认为,在搞漏洞利用前都得明确目标。比如打CTF做二进制的题目,大部分情况下,目标…

    2026年9月26日
    100
  • sublime怎么解决mac上无法使用命令行subl的问题_sublime Mac命令行Subl问题解决

    sublime怎么解决mac上无法使用命令行subl的问题_sublime Mac命令行Subl问题解决sublime怎么解决mac上无法使用命令行subl的问题_sublime Mac命令行Subl问题解决sublime怎么解决mac上无法使用命令行subl的问题_sublime Mac命令行Subl问题解决sublime怎么解决mac上无法使用命令行subl的问题_sublime Mac命令行Subl问题解决

    首先确认Sublime Text已安装在/Applications/Sublime Text.app,然后通过sudo ln -s /Applications/Sublime Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/subl创建…

    2026年9月26日 • 用户投稿
    100
  • 多模态与单模态效果有何差异 实际应用中两种模型的优劣比较

    多模态与单模态效果有何差异 实际应用中两种模型的优劣比较多模态与单模态效果有何差异 实际应用中两种模型的优劣比较多模态与单模态效果有何差异 实际应用中两种模型的优劣比较多模态与单模态效果有何差异 实际应用中两种模型的优劣比较

    本文将围绕多模态与单模态模型的差异展开叙述,旨在阐明两者在实际应用中的具体效果与优劣。文章会首先解析两种模型的基本概念,然后通过对比它们在处理信息、应对复杂任务等方面的能力,讲解其核心区别。最后,会提供一个基于应用场景的选择思路,帮助您理解如何根据具体需求来判断哪种模型更为适用。 ☞☞☞AI 智能聊…

    2026年9月26日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信