新闻中心

C++ vector插入元素_C++ insert函数用法详解

2025-12-16
浏览次数:
返回列表
C++中vector的insert函数可在指定位置插入元素,支持单个元素、多个相同元素及区间插入,返回指向新元素的迭代器;在中间插入时时间复杂度为O(n),建议频繁插入时使用list或deque,并通过reserve预留空间以提升性能。

c++ vector插入元素_c++ insert函数用法详解

C++ 中的 vector 是一种动态数组,能够自动管理内存并支持在运行时插入和删除元素。在实际开发中,我们经常需要在 vector 的指定位置插入新元素,这时就要用到 insert() 函数。本文将详细讲解 vector 的 insert 用法,包括语法、参数、返回值以及常见使用场景。

insert 函数基本语法

vector 提供了多个重载版本的 insert 函数,常用的有以下几种形式:
  • iterator insert(iterator pos, const T& value);
    在指定位置 pos 前插入一个元素 value,返回指向新插入元素的迭代器。
  • iterator insert(iterator pos, size_t n, const T& value);
    在位置 pos 前插入 n 个相同的元素 value,返回第一个插入元素的迭代器。
  • iterator insert(iterator pos, InputIterator first, InputIterator last);
    将区间 [first, last) 内的所有元素插入到 pos 之前,返回第一个插入元素的迭代器。

单个元素插入示例

这是最常见的情况:在某个位置插入一个值。

例如:

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

int main() {
    vector<int> vec = {1, 2, 4, 5};

    // 在索引为2的位置插入3
    vec.insert(vec.begin() + 2, 3);

    for (int i : vec) {
        cout << i << &quot; ";
    }
    // 输出: 1 2 3 4 5
}
说明:vec.begin() + 2 指向第3个元素(即4),insert 会在它前面插入3。

插入多个相同元素

如果你想连续插入多个相同的值,可以使用带数量参数的版本。

示例:

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

晓象AI资讯阅读神器 晓象AI资讯阅读神器

晓象-AI时代的资讯阅读神器

晓象AI资讯阅读神器 72 查看详情 晓象AI资讯阅读神器
vector<int> vec = {1, 2};

// 在开头插入3个0
vec.insert(vec.begin(), 3, 0);

// 结果: 0 0 0 1 2
这个方法比循环调用单元素插入更高效,推荐用于批量插入相同值。

插入另一个容器的部分或全部内容

insert 还可以从数组、vector、list 等其他容器中复制一段数据插入进来。

示例:

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

vector<int> vec1 = {1, 2, 6, 7};
vector<int> vec2 = {3, 4, 5};

// 将 vec2 全部插入到 vec1 中 2 和 6 之间
vec1.insert(vec1.begin() + 2, vec2.begin(), vec2.end());

// 结果: 1 2 3 4 5 6 7
也可以插入普通数组的一部分:
int arr[] = {10, 20, 30};
vec.insert(vec.end(), arr, arr + 2); // 插入前两个元素

性能注意事项

虽然 insert 功能强大,但要注意其性能影响:
  • 在 vector 中间插入元素会导致后续所有元素向后移动,时间复杂度为 O(n)。
  • 如果插入后超出容量,还会触发重新分配内存,带来额外开销。
  • 频繁在中间插入时,可考虑使用 list 或 deque。
若需大量插入操作,建议提前使用 reserve() 预留空间以减少内存重分配。 基本上就这些。掌握 insert 的不同用法,能让你更灵活地操作 vector 数据。

以上就是C++ vector插入元素_C++ insert函数用法详解的详细内容,更多请关注其它相关文章!


# c++  # 专业的网站如何做推广呢  # seo 源码  # 还会  # 还可以  # 是一种  # 边缘  # 这是  # 学习笔记  # 游戏开发  # 第一个  # 迭代  # 多个  # stream  # ios  # ai  # 线上营销有推广方式吗知乎  # 灵宝企业网站推广  # 丰台区定制网站建设  # 北京电商网站建设应用  # 站内seo检测软件  # 厦门网站建设数据库  # 宝安网站建设做网站  # 建设网站有哪些项目经理 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: MAC的“快捷指令”怎么同步到iPhone_MAC利用iCloud同步所有设备的自动化指令  一加手机拍照效果不好怎么办 一加哈苏影像调校与专业模式使用教程【高手篇】  DLsite中文平台入口 DLsite官网内容在线查看  必由学官方平台入口 必由学在线课堂登录地址  C++ map遍历方法大全_C++ map迭代器使用总结  PowerPoint如何制作滚动字幕结尾彩蛋_PowerPoint路径动画实现平滑滚动字幕效果  c++如何实现单例设计模式_c++线程安全的单例模式写法  谷歌浏览器怎么给标签页静音_Chrome标签静音快捷操作  qq浏览器如何查看和导出已保存的密码 qq浏览器密码管理器数据备份教程  俄罗斯Yandex搜索引擎入口_Yandex官网免登录一键访问  4399免费游戏网址入口 4399小游戏免费入口点开即玩  c++中为什么推荐使用using替代typedef_c++现代化类型别名  Spring Boot嵌入式服务器与J*a EE:功能支持深度解析  css滚动动画效果怎么实现_使用Animate.css滚动触发动画类  Log4j Console Appender性能瓶颈与高并发优化策略  Lar*el如何正确地在控制器和模型之间分配逻辑_Lar*el代码职责分离与架构建议  如何使用Node.js csv 包按条件移除含空字段的CSV记录  如何在CSS中使用visited与link控制链接颜色_visited link伪类配合  CKEditor 5 自定义构建在React应用中渲染失败的调试与解决  支付宝如何管理隐私设置_支付宝隐私保护的配置技巧  快速CSGO开箱网站指南 CSGO开箱平台推荐  C++如何操作注册表_Windows平台下C++读写注册表的API函数详解  现代化 SciPy 一维插值:interp1d 的替代方案与最佳实践  html怎么运行外部js文件中的函数_运html外js文件函数法【技巧】  AO3网页版合集入口 Archive of Our Own同人作品浏览指南  服务端验证_j*ascript输入检查  TikTok搜索结果不显示如何解决 TikTok搜索刷新优化方法  如何在Promise链中有效终止错误处理后的执行  漫蛙官网正版漫画入口 漫蛙2官方网页登录地址  Go语言中JSON数据解码与字段访问指南  搜狗浏览器如何使用密码生成器创建强密码 搜狗浏览器内置密码安全工具  必由学官方网站入口 必由学学生教师共用登录通道  深入理解J*aScript Promise异步执行与微任务队列  Win10如何清理注册表垃圾 Win10注册表维护与优化指南【慎用】  一加 Nord 5 隐私权限异常_一加 Nord 5 系统安全优化  美团外卖商家服务中心入口 美团商家版官网入口  163邮箱注册官网 免费申请163个人邮箱  自定义Bag-of-Words实现:处理带负号的词汇权重  Spring Boot内嵌服务器与J*a EE全栈特性:选择与部署策略  韩小圈电脑版在线入口_网页版免费登录地址  sublime如何配置Python开发环境_将sublime打造成轻量级Python IDE  React项目中导航栏Logo自适应布局:避免裁剪与布局溢出  Composer的 archive 命令怎么用_快速打包你的PHP项目及其Composer依赖  LINUX的I/O重定向是什么_深入理解LINUX中 >、>> 与 < 的区别  mysql通配符支持数字匹配吗_mysql通配符能否用于数字匹配的解析  生成rdflib自定义SPARQL函数:参数匹配与实践指南  c++如何实现一个简单的ECS框架_c++数据驱动设计与游戏开发  ACG动漫视频网入口 ACG动漫*免费正版观看地址  漫蛙2(台版)官方入口地址 漫蛙2(台版)正版漫画网页端  Golang如何优化CPU绑定任务分配策略_Golang CPU任务分配优化实践 

搜索