如何使用C++ STL合并两个向量

如何使用C++ STL合并两个向量

给定两个向量,使用C++ STL将它们合并起来。

示例:

输入:

vec1 = {1, 45, 54, 71, 76, 12},vec2 = {1, 7, 5, 4, 6, 12}

输出: {1, 4, 5, 6, 7, 12, 45, 54, 71, 76}

输入:

vec1 = {1, 7, 5, 4, 6, 12},vec2 = {10, 12, 11}

输出: {1, 4, 5, 6, 7, 10, 11, 12}

方法: 使用STL的set_union()函数进行合并。

语法:

set_union (InputIterator1 first1, InputIterator1 last1,
           InputIterator2 first2, InputIterator2 last2,
           OutputIterator result);
// C++ program to join two Vectors
// using set_union() in STL

#include <bits/stdc++.h>
using namespace std;

int main()
{
    // 获取向量
    vector<int> vector1 = {1, 45, 54, 71, 76, 12};
    vector<int> vector2 = {1, 7, 5, 4, 6, 12};

    // 对向量排序
    sort(vector1.begin(), vector1.end());
    sort(vector2.begin(), vector2.end());

    // 输出向量
    cout << "第一个向量:";
    for (int i = 0; i < vector1.size(); i++)
        cout << vector1[i] << " ";
    cout << endl;

    cout << "第二个向量:";
    for (int i = 0; i < vector2.size(); i++)
        cout << vector2[i] << " ";
    cout << endl;

    // 初始化一个向量
    // 用于存储公共值
    // 和一个迭代器
    // 用于遍历此向量
    vector<int> v(vector1.size() + vector2.size());
    vector<int>::iterator it, st;

    it = set_union(vector1.begin(),
                   vector1.end(),
                   vector2.begin(),
                   vector2.end(),
                   v.begin());

    cout << "\n合并后:\n";
    for (st = v.begin(); st != it; ++st)
        cout << *st << ", ";
    cout << '\n';

    return 0;
}  

输出:

第一个向量:1 12 45 54 71 76 
第二个向量:1 4 5 6 7 12 

合并后:
1, 4, 5, 6, 7, 12, 45, 54, 71, 76,

注意,向量不应包含相同的元素:

如何使用C++ STL合并两个向量

如果输入相同的元素,set_union函数将仅考虑该元素的一个实例,并默认其余部分为0。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程