如何在 STL 容器中查找非重复值 C++11.

How to find distinct values in an STL container C++11

本文关键字:C++11 查找 STL      更新时间:2023-10-16

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

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

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

**编辑:最好也得到每个的计数....喜欢。。。C++11 中的 SQL

给定一个输入向量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