我现在可能太累了。如何在容器或范围中找到不同的值?
我查看了算法库,但看不到任何标准。我可以发誓有一个标准的算法来做到这一点。
除了有一个容器B,我只添加容器A中尚未出现的元素......
**编辑:最好还是计算每个......就像...... C ++ 11中的SQL
答案 0 :(得分:3)
给定输入向量v
,您可以执行类似
std::sort(begin(v), end(v)); // O(N log N) where N = v.size()
auto it = std::unique(begin(v), end(v)); // O(N)
等效(不是真的,因为你需要额外的内存,上面的方法是就地的),你可以将它们复制进出std::set
:
std::set<T> s(begin(v), end(v)); // O(N log N);
auto it = std::copy(begin(s), end(s), begin(v)); // O(N);
请注意,在这两种情况下,您都需要实际删除已删除的元素
v.erase(it, end(v)); // O(K), where K is the number of removed duplicates