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

在C++中合并多个vector有多种方法,常用的方式包括使用insert、std::copy结合back_inserter,或C++17以后的std::ranges(如果可用)。下面介绍几种实用且高效的合并方式。
使用 insert 合并 vector
insert 是最直接的方法,可以将一个 vector 的全部元素插入到另一个 vector 的指定位置。
适用于任意数量的 vector 合并 语法简单,性能较好
示例代码:
#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++++中如何合并多个vector_c++ vector合并方法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1477176.html
微信扫一扫
支付宝扫一扫