两个std::vector合并
时间: 2023-10-17 21:25:50 浏览: 200
您可以使用`std::vector`的`insert`函数将一个向量的元素插入到另一个向量中。以下是一个示例代码:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2 = {4, 5, 6};
vec1.insert(vec1.end(), vec2.begin(), vec2.end());
// 输出合并后的向量
for (const auto& num : vec1) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:1 2 3 4 5 6,即两个向量合并后的结果。
相关问题
将一个std::vector 复制且合并到另一个std::vector
将一个`std::vector`复制并合并到另一个`std::vector`,可以使用C++标准库提供的`insert()`函数或者是通过迭代器进行逐个元素添加。以下是两种常见的方法:
**方法一:直接复制**
```cpp
std::vector<int> vec1; // 假设vec1已填充数据
std::vector<int> vec2;
// 使用push_back()复制
for (const auto& elem : vec1) {
vec2.push_back(elem);
}
// 或者使用insert()
vec2.insert(vec2.end(), vec1.begin(), vec1.end());
```
**方法二:迭代器操作**
```cpp
std::vector<int> vec1;
// ...(同上)
// 使用迭代器进行插入
vec2.reserve(vec1.size()); // 预先分配空间提高效率
vec2.insert(vec2.end(), vec1.begin(), vec1.end());
```
在这两个方法中,第一个`std::vector`的数据会被完整地移动或复制到第二个`std::vector`中。
合并两个std::vector
可以使用 std::merge 函数将两个 std::vector 合并在一起。
示例代码如下:
```
#include <algorithm>
#include <vector>
int main() {
std::vector<int> v1{1, 3, 5, 7};
std::vector<int> v2{2, 4, 6, 8};
std::vector<int> v3(v1.size() + v2.size()); // 创建第三个 vector,大小为 v1 和 v2 之和
// 将 v1 和 v2 合并到 v3 中
std::merge(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());
return 0;
}
```
在上面的代码中,v3 合并了 v1 和 v2 中的元素。v3 的内容是 [1, 2, 3, 4, 5, 6, 7, 8]。
注意,std::merge 函数要求输入的两个序列是已排序的。如果你的两个 vector 不是已排序的,你可以使用 std::sort 函数将它们排序,然后再使用 std::merge 合并它们。
阅读全文
相关推荐

















