是否有任何优雅的方法来减去std::vector
包含重复元素的 s?
例子:
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
但这有点容易出错,对我来说看起来并不优雅。
还有其他想法吗?