首页 > 后端开发 > C++ > 正文

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

下次还敢
发布: 2025-10-03 08:45:02
原创
490人浏览过
使用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 合并
  • 语法简单,性能较好

示例代码:

法语写作助手
法语写作助手

法语助手旗下的AI智能写作平台,支持语法、拼写自动纠错,一键改写、润色你的法语作文。

法语写作助手 31
查看详情 法语写作助手
#include <vector>
#include <iostream>

int main() {
    std::vector<int> v1 = {1, 2, 3};
    std::vector<int> v2 = {4, 5, 6};
    std::vector<int> 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++免费学习笔记(深入)”;

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

示例代码:

#include <vector>
#include <algorithm>
#include <iterator>

std::vector<int> result;
std::vector<int> 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<int> v1 = {1, 2};
std::vector<int> v2 = {3, 4};
std::vector<int> v3 = {5, 6};

// 计算总大小
size_t total_size = v1.size() + v2.size() + v3.size();
std::vector<int> 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++++中如何合并多个vector_c++ vector合并方法的详细内容,更多请关注php中文网其它相关文章!

相关标签:
c++速学教程(入门到精通)
c++速学教程(入门到精通)

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

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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