如何在C ++ STL中连接两个向量?

给定两个向量,我们必须使用C ++ STL程序将它们加入。

连接两个向量

连接两个向量,我们可以使用set_union()函数,它接受指向起始和结束范围的两个向量的迭代器以及指向起始位置的结果向量(我们在其中存储结果)的迭代器,并返回一个迭代器指向构造范围的末端。

注意:要使用vector –包含<vector>头文件,而要使用set_union()函数–包含<algorithm>头文件,或者我们可以简单地使用<bits / stdc ++。h>头文件。

语法:

    std::set_union(
        iterator start1, iterator end1, 
        iterator start1, iterator end1, 
        iterator start3);

在这里,迭代器start1,迭代器end1 –是指向第一个向量的开始和结束位置的迭代器,迭代器start2,迭代器end2 –是指向第二个向量的起始和结束位置的迭代器,迭代器start3 –是迭代器指向到结果向量的起始位置。

结合两个向量的C ++ STL程序

//连接两个向量的C ++ STL程序
#include <bits/stdc++.h>
using namespace std;

int main(){
    //向量
    vector<int> v1 = { 10, 20, 30, 40, 50, 10, 20 };
    vector<int> v2 = { 100, 10, 200, 50, 20, 30 };

    //排序向量
    sort(v1.begin(), v1.end());
    sort(v2.begin(), v2.end());

    //打印矢量
    cout << "v1: ";
    for (int x : v1)
        cout << x << " ";
    cout << endl;

    cout << "v2: ";
    for (int x : v2)
        cout << x << " ";
    cout << endl;

    //将结果向量声明为
    //存储连接的元素
    vector<int> v3(v1.size() + v2.size());

    //用于存储返回类型的迭代器
    vector<int>::iterator it, end;

    end = set_union(
        v1.begin(), v1.end(),
        v2.begin(), v2.end(),
        v3.begin());

    cout << "After joining v3: ";
    for (it = v3.begin(); it != end; it++)
        cout << *it << " ";
    cout << endl;

    return 0;
}

输出结果

v1: 10 10 20 20 30 40 50
v2: 10 20 30 50 100 200
After joining v3: 10 10 20 20 30 40 50 100 200