簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM