0

0

c++中如何在vector中插入元素_c++ vector插入元素实现

穿越時空

穿越時空

发布时间:2025-10-01 20:38:02

|

1044人浏览过

|

来源于php中文网

原创

答案:C++中vector插入元素主要用push_back、insert、emplace_back等方法。1. push_back在末尾插入,均摊时间复杂度O(1),适合大多数场景;2. insert可在任意位置插入单个、多个或范围元素,但需移动后续元素,时间复杂度O(n);3. emplace_back和emplace支持原地构造对象,避免拷贝,提升性能;4. 末尾插入优先使用push_back或emplace_back,中间插入使用insert或emplace,但频繁中间插入影响效率,可考虑list等其他容器。

c++中如何在vector中插入元素_c++ vector插入元素实现

在C++中,vector 是一种动态数组,支持自动扩容。向 vector 中插入元素主要通过 insert()push_back() 两个成员函数实现。根据插入位置和方式的不同,选择合适的方法可以提升代码效率和可读性。

使用 push_back() 在末尾插入元素

这是最常用、最高效的插入方式,适用于在 vector 末尾添加单个或多个元素。

push_back() 时间复杂度为均摊 O(1),适合大多数场景。

示例:

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

#include 
#include 

std::vector vec;
vec.push_back(10);  // 插入一个元素
vec.push_back(20);
vec.push_back(30);

for (int n : vec) {
    std::cout << n << " ";  // 输出: 10 20 30
}

使用 insert() 在指定位置插入元素

insert() 允许在 vector 的任意位置插入一个或多个元素,甚至插入另一个容器的元素范围。

该操作时间复杂度为 O(n),因为需要移动插入点后的所有元素。

Remover
Remover

几秒钟去除图中不需要的元素

下载

常见用法:

  • 插入单个元素
    vec.insert(vec.begin() + 1, 99);  // 在索引1处插入99
  • 插入多个相同元素
    vec.insert(vec.end(), 3, 88);  // 在末尾插入3个88
  • 插入另一个容器的部分或全部元素
    std::vector other = {1, 2, 3};
    vec.insert(vec.begin(), other.begin(), other.end());  // 将other全部插入到vec开头
    

使用 emplace() 和 emplace_back() 原地构造对象

当 vector 存储的是复杂对象(如类实例)时,emplace_back()emplace() 可以直接在容器内存中构造对象,避免临时对象的创建和拷贝,提升性能。

示例:

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

std::vector strings;
strings.emplace_back("Hello");  // 直接构造,不生成临时string

struct Point {
    int x, y;
    Point(int x, int y) : x(x), y(y) {}
};
std::vector points;
points.emplace_back(3, 4);  // 构造 Point(3,4) 并放入vector

基本上就这些。根据插入位置和性能需求选择合适方法:末尾插入优先用 push_backemplace_back,中间插入用 insertemplace。注意频繁在中间插入会影响性能,必要时考虑其他容器如 list。

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

132

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

54

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

19

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

85

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

43

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

11

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

49

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 7万人学习

C 教程
C 教程

共75课时 | 4.1万人学习

C++教程
C++教程

共115课时 | 12.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号