[英]How to find distinct values in an STL container C++11
我現在可能太累了。 如何在容器或范圍中找到不同的值?
我已經瀏覽了算法庫,但是看不到任何標准的庫。 我可以發誓有一種標准的算法可以做到這一點。
除了擁有容器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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.