2016-08-04 59 views
-2

我可以在類似於C++的創造指針集:什麼是比較運算符的參考?

std::set<Data*> data_set; 

有沒有類似的方式來寫:

SortedSet<Data> data_set; 

編輯:我想在C#中使用類似階邏輯。數據是Object的簡單派生類。

+0

可能是有用的http://stackoverflow.com/questions/1072786/c-sharp-alternative-for-the-c-stl-sett – Vladimir

+0

你能詳細說明你在做什麼嗎?如果您希望在C#中使用與SortedSet提供的不同排序的排序集,請在類中實現IComparer接口並覆蓋Compare方法。 – Ingenioushax

+2

如果你想在這些對象沒有邏輯順序時擁有一組唯一的對象實例,那麼你應該使用'HashSet',而不是'SortedSet'。 – Servy

回答

2

嘗試使用HashSet。一組是不包含重複元素

HashSet<Data> data_set = new HashSet<Data>(); 
data_set.Add(new Data()); 
+1

我覺得他對C#中引用的比較感到困惑,他沒有試圖找到他應該使用什麼類型的集合。 – sachin

0

在大多數情況下,C#集合並未顯式指針和引用類似C++是。但是,如果您創建了一個對象集合,它總是隱式地成爲對象的引用的集合(請注意,在這種情況下,我說的是「對象」;對值類型的處理方式不同)。 (在大多數情況下,C#使用引用而不是指針本身 - 有關此例外情況,請參閱here)。然後您可以使用「==」運算符進行引用平等。

您提供的C#代碼實際上會與您提供的C++代碼具有相似的效果(當然,除了當然,您不必明確指針/引用)。

+0

謹慎解釋downvote? – EJoshuaS