📅  最后修改于: 2023-12-03 15:38:31.314000             🧑  作者: Mango
有时候我们需要将两个Vector进行连接,使其变成一个更大的Vector。在C++中,使用STL可以很容易地完成这个任务。
一种简单的方法是使用std::copy()
函数。该函数可以将一个区间内的元素复制到另一个区间内,并返回指向最后一个复制元素的下一个位置的迭代器。
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2 = {4, 5, 6};
std::vector<int> result(vec1.size() + vec2.size());
std::copy(vec1.begin(), vec1.end(), result.begin());
std::copy(vec2.begin(), vec2.end(), result.begin() + vec1.size());
for (const auto& element : result) {
std::cout << element << " ";
}
std::cout << std::endl;
return 0;
}
输出结果为:
1 2 3 4 5 6
这里先创建一个大小为两个Vector大小之和的新Vector result
,再使用std::copy()
函数分别将两个Vector的元素复制到result
中。需要注意的是,第二个std::copy()
函数中的起始位置需要加上已经复制过的元素个数,即vec1.size()
。
另一种方法是使用std::vector::insert()
函数。该函数可以在任意位置插入一个元素或一段元素。可以先将其中一个Vector的元素全部插入到另一个Vector中。
#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& element : vec1) {
std::cout << element << " ";
}
std::cout << std::endl;
return 0;
}
输出结果为:
1 2 3 4 5 6
这里使用vec1.insert()
函数将vec2
中的元素插入到vec1
的尾部。需要注意的是,vec2.begin()
和vec2.end()
分别表示插入的区间的起始位置和结束位置。
以上是两种在C++中使用STL连接两个Vector的方法。这些方法可以通过不同的STL算法和函数实现。其中择优取用可以让代码更加简洁易读。