c++ vector 合并
时间: 2025-01-03 19:36:27 浏览: 14
### 合并C++中的向量
在C++中,可以使用多种方法来合并两个`std::vector`对象。以下是几种常见的实现方式:
#### 方法一:使用 `insert`
通过调用目标向量的`insert()`成员函数,可将另一个向量的内容插入到指定位置。
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec1{1, 2, 3};
std::vector<int> vec2{4, 5, 6};
// 将vec2追加到vec1后面
vec1.insert(vec1.end(), vec2.begin(), vec2.end());
for (auto& elem : vec1) {
std::cout << elem << " ";
}
}
```
此代码片段展示了如何利用`insert()`方法把第二个向量的所有元素添加至第一个向量之后[^1]。
#### 方法二:使用范围for循环手动复制
另一种简单的方式是遍历源向量并将每个元素逐个推入目的向量。
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec1{1, 2, 3};
std::vector<int> vec2{4, 5, 6};
for(auto &elem : vec2){
vec1.push_back(elem);
}
for (auto& elem : vec1) {
std::cout << elem << " ";
}
}
```
这种方法同样能够有效地完成两者的连接操作。
#### 方法三:借助算法库中的copy_if 或 copy_n 函数
对于更复杂的场景,还可以考虑采用标准模板库(STL)提供的高级工具来进行处理。
```cpp
#include <algorithm>
#include <iterator>
#include <iostream>
#include <vector>
int main(){
std::vector<int> vec1 {10, 20, 30}, vec2 {40, 50, 60};
// 使用 back_inserter 自动调整容器大小
std::copy(std::begin(vec2), std::end(vec2),
std::back_inserter(vec1));
for(const auto& item : vec1){
std::cout<<item<<" ";
}
}
```
上述例子说明了当需要执行条件性拷贝或其他特定逻辑时,STL提供了强大的支持功能。
阅读全文