乐于分享
好东西不私藏

C++ STL源码:std::vector::insert 实现分析

C++ STL源码:std::vector::insert 实现分析

我是一名软件工程师,自2006年开始学习《计算机科学与技术》专业课程,于2010年完成大学本科阶段的专业课学习并于同年参加工作。2010年至今一直在一线从事软件研发相关的工作,有着丰富的编程与踩坑经验,希望我的文章能给你带来些许帮助!

源码版本:gcc-15.1.0

函数 Insert

std::vector::insert 有多个重载版本(插入单个元素、插入多个元素、插入迭代器范围等),但核心逻辑一致,概括如下:
  1. 检查插入位置合法性;
  2. 计算需要新增的元素数量,判断是否需要扩容(重新分配内存);
  3. 移动插入位置后的现有元素,腾出空间;
  4. 构造新插入的元素;
  5. 更新 vector 的大小(_M_size)。
今天一其中一个重载实现来分析insert的过程,其他重载实现类似。

函数签名: insert(const_iterator __position, value_type&& __x)

依赖的内部实现:_M_insert_rval

依赖的内部实现:_M_insert_aux

依赖的内部实现:_M_realloc_insert


合作交流请扫码,喜欢,就 “关注+点赞+推荐+转发” 吧!

作者寄语
首先感谢所有能够认真读完我的文章的道友。在每篇文章发布前我都会做认真校对,但受限于作者知识的局限性,文章中也难免会出现一些瑕疵与错误的地方,如您阅读时发现错误,欢迎您留言或私信告诉我,我会做勘误处理。
关于写作的目的:此公众号的所有文章都是我在业余时间对自己知识体系梳理后的成果展现,之所以选择在公众号做输出,一是想给自己的知识找个家,方便自己翻阅;二是希望能够让我的文章能够帮助一些在编程领域还没入门的朋友;最后也是希望能有机会给自己加个鸡腿
关于更新频率因为我是利用业余时间写的文章,要保障文章的内容有价值且正确,所以我不能保证每天更新,但是尽量每周至少更新一篇。
如果我的文章对您有些许的帮助,您可以留言告诉我;如果您希望对某些知识点做更深入的了解与学习,也可以留言告诉我;最后感谢您对我的认可
本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » C++ STL源码:std::vector::insert 实现分析

评论 抢沙发

1 + 8 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮