2016-10-03 83 views
0

我有一個屬於兩個類別A & B的元素列表。每個元素都有一個屬性P.要求是屬性P不能有相同的值任何兩個屬於不同類別的元素。我們必須找到所有共享相同屬性值並違反此規則的元素。 使用C++ STL/boost庫實現它的最簡單方法是什麼?我正在使用gcc 4.8.3。所以任何需要C++ 14或更高版本的解決方案都無法工作。使用STL尋找具有匹配屬性的元素的算法

+0

請您提供您的輸入數據的小例子。假設你的測試數據很難。 – Naidu

+0

idk關於你的情況....但是當我處於類似的情況時,我更喜歡一個['std :: unordered_set'](http://en.cppreference.com/w/cpp/container/unordered_set)的清單,這樣的問題永遠不會出現。 –

回答

1

在P上對列表進行排序。這會將具有相同P的所有元素放在一起。所以你現在可以走這個列表,並且對於每個相鄰的對,檢查它們是否具有相同的P並且是不同的類別。

O(n log n)爲排序和O(n)走路列表並檢查。