是否有任何減法std::vector
的優雅方法,其中包含重複的元素?減去包含重複元素的向量
例子:
v1 = { 3, 1, 2, 1, 2, 2 }
v2 = { 2, 4, 3, 3, 3 }
result1 = ??(v1, v2)
result2 = ??(v2, v1)
,我希望得到的結果是:
result1 = { 1, 1 }
result2 = { 4 }
我現在的(很慢)解決方案:
1) sort v1 and v2
2) use std::unique_copy to v1_uniq, v2_uniq
3) intersect the new vectors with std::set_intersection
4) iterate over v1 and v2 and remove all elements, that are in the intersection 3)
我的另一個想法是:
1) sort v1 and v2
2) iterate over v1 and v2 and remove duplicates in parallel
但是,這是有點容易出錯看起來不優雅了我。
還有其他想法嗎?
你是否總是想用兩種方式執行操作? (即,你是否需要'result1'和'result2'?) –
@DavidRodríguez-dribeas - 是的,我做 –