在這個項目中,有多個sets
,其中它們保持1-9的值。在此範圍內,我需要有效地確定在一個set
中是否有唯一的值,而不是其他值。確定多個集合中的唯一值
例如:
std::set<int> s_1 = { 1, 2, 3, 4, 5 };
std::set<int> s_2 = { 2, 3, 4 };
std::set<int> s_3 = { 2, 3, 4, 6 };
注:的sets
的數量是未知的,直到runtime
。
正如你所看到的,s_1
包含1
和5
和s_3
包含6
獨特價值的獨特價值。
確定的唯一值後,上述sets
應該那麼只包含唯一值,如:
// s_1 { 1, 5 }
// s_2 { 2, 3, 4 }
// s_3 { 6 }
我已經試過到目前爲止是loop
通過所有的sets
和記錄的count
已出現的numbers
。不過,我想知道是否有更有效的解決方案。
我不認爲有比檢查所有集合中的每個數字更有效的解決方案。如果您是從s_1開始的,那麼不應該將2,3和4放在s_1而不是s_2中? – 2015-01-21 08:47:21
2,3和4都是集合,不應該出現在最後沒有集合(即不應該設置爲空)? – 2015-01-21 08:50:03
所有的'sets'都是相互獨立地獲取他們的數據,但爲了這個程序的目的,我想在獲得數據後從包含唯一值的集合中挑出非唯一值。 – Hayden 2015-01-21 08:50:32