如何在STL容器C ++ 11中查找不同的值

时间:2013-12-26 10:24:20

标签: c++ algorithm c++11 stl containers

我现在可能太累了。如何在容器或范围中找到不同的值?

我查看了算法库,但看不到任何标准。我可以发誓有一个标准的算法来做到这一点。

除了有一个容器B,我只添加容器A中尚未出现的元素......

**编辑:最好还是计算每个......就像...... C ++ 11中的SQL

1 个答案:

答案 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