📜  如何在C++中使用STL连接两个Vector?(1)

📅  最后修改于: 2023-12-03 15:38:31.314000             🧑  作者: Mango

如何在C++中使用STL连接两个Vector?

有时候我们需要将两个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算法和函数实现。其中择优取用可以让代码更加简洁易读。