使用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 的全部元素插入到另一个 vector 的指定位置。
示例代码:
#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;
}
这种方法更通用,尤其适合与其他容器或算法配合使用。
立即学习“C++免费学习笔记(深入)”;
示例代码:
#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,并预分配空间以提升性能。
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++23 引入了更现代的范围操作,但目前大多数项目仍使用 C++17 或 C++14。若环境支持,可尝试使用 std::ranges::join_view 实现惰性合并(不立即复制数据)。
注意:这是只读视图,不生成新 vector。
基本上就这些常见方法。insert 最常用也最高效,搭配 reserve 能避免不必要的内存重分配。以上就是c++++中如何合并多个vector_c++ vector合并方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号