两个向量的结合

Union of two vectors

本文关键字:向量 结合 两个      更新时间:2023-10-16

我有载体A包含数字1,7,9,9,3,13,3我有载体B,其中包含数字9,11,7,7,3,2,1

我需要获取向量C,该向量C将包含以下两个向量的每个元素,但每次都只有一次(例如,来自向量A的数字9不应重复)因此C应包含1,7,9,3,13,11,2

此代码将使Vector C成为两个向量的联合,但会重复一些数字(如果一个向量包括3倍数字1,则C还包括3x数字1)

vector<int>union(vector<int>A,vector<int>B)
{ 
    sort(A.begin(),A.end());
    sort(B.begin(),B.end());
    vector<int> C(A.size()*2);            //vector A has same size as vector B
    vector<int>::iterator it= set_union(A.begin(),A.end(),B.begin(),B.end(),C.begin());
    C.resize(it-C.begin());
    return C;
}

它必须尽可能快地工作。这样做的最好方法是什么?

此问题的正确解决方案是先对每个向量进行排序,然后以类似于sink排序的方式获取相交/联合/过滤。