0

0

c++中如何合并多个vector_c++ vector合并方法

下次还敢

下次还敢

发布时间:2025-10-03 08:45:02

|

502人浏览过

|

来源于php中文网

原创

使用insert可直接合并vector,性能好且语法简单;2. std::copy配合back_inserter适用于空目标容器;3. 预分配空间的合并方式推荐用于创建新vector;4. C++17范围操作提供惰性合并视图。

c++中如何合并多个vector_c++ vector合并方法

在C++中合并多个vector有多种方法,常用的方式包括使用insertstd::copy结合back_inserter,或C++17以后的std::ranges(如果可用)。下面介绍几种实用且高效的合并方式。

使用 insert 合并 vector

insert 是最直接的方法,可以将一个 vector 的全部元素插入到另一个 vector 的指定位置。

  • 适用于任意数量的 vector 合并
  • 语法简单,性能较好

示例代码:

Sylius开源电子商务平台
Sylius开源电子商务平台

Sylius开源电子商务平台是一个开源的 PHP 电子商务网站框架,基于 Symfony 和 Doctrine 构建,为用户量身定制解决方案。可管理任意复杂的产品和分类,每个产品可以设置不同的税率,支持多种配送方法,集成 Omnipay 在线支付。功能特点:前后端分离Sylius 带有一个强大的 REST API,可以自定义并与您选择的前端或您的微服务架构很好地配合使用。如果您是 Symfony

下载
#include 
#include 

int main() {
    std::vector v1 = {1, 2, 3};
    std::vector v2 = {4, 5, 6};
    std::vector v3 = {7, 8, 9};

    // 合并 v2 到 v1
    v1.insert(v1.end(), v2.begin(), v2.end());
    // 合并 v3 到 v1
    v1.insert(v1.end(), v3.begin(), v3.end());

    for (int x : v1) {
        std::cout << x << " ";
    }
    // 输出: 1 2 3 4 5 6 7 8 9
    return 0;
}

使用 std::copy 和 back_inserter

这种方法更通用,尤其适合与其他容器或算法配合使用。

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

  • 需要包含 gorithm> 和
  • 适用于目标 vector 初始为空的情况

示例代码:

#include 
#include 
#include 

std::vector result;
std::vector v1 = {1, 2}, v2 = {3, 4}, v3 = {5, 6};

std::copy(v1.begin(), v1.end(), std::back_inserter(result));
std::copy(v2.begin(), v2.end(), std::back_inserter(result));
std::copy(v3.begin(), v3.end(), std::back_inserter(result));

合并多个 vector 到新 vector(推荐做法)

如果你不想修改原始 vector,可以创建一个新的 vector,并预分配空间以提升性能。

std::vector v1 = {1, 2};
std::vector v2 = {3, 4};
std::vector v3 = {5, 6};

// 计算总大小
size_t total_size = v1.size() + v2.size() + v3.size();
std::vector merged;
merged.reserve(total_size); // 避免多次内存分配

merged.insert(merged.end(), v1.begin(), v1.end());
merged.insert(merged.end(), v2.begin(), v2.end());
merged.insert(merged.end(), v3.begin(), v3.end());

使用 reserve() 可显著提高性能,特别是当 vector 较大时。

使用 C++17 范围(可选)

C++23 引入了更现代的范围操作,但目前大多数项目仍使用 C++17 或 C++14。若环境支持,可尝试使用 std::ranges::join_view 实现惰性合并(不立即复制数据)。

注意:这是只读视图,不生成新 vector。

基本上就这些常见方法。insert 最常用也最高效,搭配 reserve 能避免不必要的内存重分配。

相关文章

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

422

2023.08.14

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

32

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

23

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

16

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

5

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

5

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

267

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

195

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

168

2026.01.31

热门下载

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

精品课程

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

共32课时 | 4.5万人学习

Go语言实战之 GraphQL
Go语言实战之 GraphQL

共10课时 | 0.8万人学习

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

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