当前位置: 首页 > news >正文

容器填充函数fill和memset对比总结

文章目录

  • 1、fill() 按元素填充
  • 2、memset() 按字节填充
  • 3、对比

1、fill() 按元素填充

  • 用于将容器或数组的指定范围内的元素赋值为指定值(按元素类型填充)。
  • 属于 C++ STL 算法(<algorithm> 头文件)。
// 从起始地址到结束地址的下一位置全部赋为目标值
fill(起始地址, 结束地址下一位,);fill(a, a + n, -1);  // 一维数组
fill(a[0], a + n * n, -1);  // 二维数组
fill(vec.begin(), vec.end(), -1);  // 动态数组

2、memset() 按字节填充

  • 用于将一块内存的每个字节设置为指定的值(按字节填充)。
  • 属于 C 标准库函数(<cstring> 头文件)。
// 从起始地址将要填充的字节数都填充为目标值
memset(起始地址, 值, 要填充的字节数);int a[10];
memset(a, 0, sizeof(a)); // 所有元素初始化为0char c[10];
memset(c, 'A', sizeof(c));  // 所有元素初始化为A

不能直接用于非字节类型,比如 int a[5]; memset(a, 1, sizeof(a)); 并不会将每个 int 设为 1,而是每个字节设为 0x01,导致每个 int 的实际值为 0x01010101(16843009)。

3、对比

特性memsetfill
填充单位字节元素
头文件<cstring><algorithm>
效率极高(硬件优化)较高(通用循环赋值)
适用类型char、内存块任意类型(如 intdouble
安全性低(易误用导致数据错误)高(类型安全)
典型用途清零内存、初始化字符数组初始化 STL 容器、非字节类型数组

相关文章:

  • ospf实验报告
  • Java虚拟机的基本结构
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(18):条件形 文法
  • Gartner《Container发布与生命周期管理最佳实践》学习心得
  • libwebsockets:高性能跨平台WebSocket库实践指南
  • Vue基础(8)_监视属性、深度监视、监视的简写形式
  • 《全球短剧正版授权通道,助力平台出海与流量变现》
  • HashMap中put()方法的执行流程
  • 联邦学习图像分类实战:基于FATE与PyTorch的隐私保护机器学习系统构建指南
  • Python-77:古生物DNA序列血缘分析
  • 指针运算典型例题解析
  • AI生成视频推荐
  • List接口
  • PySide6 GUI 学习笔记——常用类及控件使用方法(常用类边距QMarginsF)
  • RT-Thread 深入系列 Part 4:组件包管理与软件框架
  • Java动态代理超详细解析:三步+内存图(堆栈分析)
  • Linux进程间信号
  • ts装饰器
  • 从杰夫・托尔纳看 BPLG 公司的技术创新与发展
  • LeetCode 39 LeetCode 40 组合总和问题详解:回溯算法与剪枝优化(Java实现)
  • 巴基斯坦外长:印巴停火
  • 综艺还有怎样的新可能?挖掘小众文化领域
  • 深圳两家会所涉卖淫嫖娼各被罚7万元逾期未缴,警方发催告书
  • A股三大股指低收:银行股再度走强,两市成交11920亿元
  • 全国人大常委会启动食品安全法执法检查
  • 印度杰纳布河上游两座水电站均已重新开闸