2010-04-17 4 views
13

je voudrais avoir un conteneurExiste-t-il un équivalent de std :: set en C#?

StdStyleSet<A> 

de

class A : IComparable<A> { ... } 

qui satisfait les propriétés de std :: set. Cela serait particulièrement:

  • Les éléments themselve sont les clés
  • triés automatiquement lors de l'insertion

Répondre

14

SortedSet<T>: voir documents - bien que techniquement, il est dans le .NET Framework. Pour les versions antérieures, vous pouvez utiliser un HashSet et trier en utilisant LINQ, ce qui n'est pas idéal si vous consommez l'ensemble de manière ordonnée. Vous pouvez également utiliser un SortedDictionary<TKey,TValue> avec la valeur Object et stocker vos éléments dans les clés avec des valeurs nulles pour les valeurs.

+3

C'est dans .NET 4 .. les a pris assez longtemps. –

+0

Nice! Donc, il n'y a pas de solution pour les versions antérieures? – Danvil

+2

@Danvil - Vous pouvez utiliser un HashSet et gérer n'importe quel tri avec LINQ, ou utiliser un SortedDictionary et stocker des valeurs nulles pour les valeurs, c'est-à-dire utiliser uniquement les clés. – tvanfosson

Questions connexes