2
我有向量A包含數字1,7,9,9,3,13,3 我有向量B包含數字9,11,7,7,3,2 ,1兩個向量的聯合
我需要得到向量C,它將包含下面兩個向量中的每個元素,但每個元素只有一次(例如,向量A中的數字9不應該重複) 因此C應該包含1,7,9, 3,13,11,2
此代碼將使這將是兩個矢量的聯合,但還會有一些數字重複矢量C(如果一個向量包括3×1號,則C也包括3×號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;
}
它必須儘可能快地工作。 這樣做的最好方法是什麼?
爲什麼不使用C作爲std :: set和covert設置爲vector。 – MarsRover
@MarsRover你絕對正確,一套是數學和編程方式的正確選擇,對於給定的要求 – Paranaix
與大矢量大小它是相當緩慢:(我需要得到它的工作更快 – Serillan