2009-06-05 12 views
1

Dans mon programme (un programme qui aide à la recherche de chemin), j'ai besoin de stocker une liste qui contient des entrées consistant en un nœud de début et un nœud de fin. Un dictionnaire ne fonctionnera pas car je ne peux pas garantir que la "clé" (un noeud bien sûr) sera unique. Quelle est la meilleure façon de stocker cette manière de données? Éditer: j'utilise C# et .Net 3.5.Comment stocker les données associées

Répondre

3

Il vaudrait peut-être mieux utiliser simplement un ensemble de structures. Ou un vecteur de structures. Cela permet des nœuds non uniques dans votre liste. Les vecteurs sont un modèle standard en C++, mais si C# ne le supporte pas, alors un tableau devrait fonctionner correctement.

0

Si la langue de votre choix prend en charge les ensembles, un ensemble de tuples (début, fin) est ce que vous recherchez.

+0

Hmm .... Je vais devoir vérifier si .net supporte cela. – RCIX

+0

Vous pouvez également émuler un ensemble en utilisant un dictionnaire avec les arêtes (s.e) en tant que clés. Vous pouvez ignorer les valeurs ou les utiliser pour stocker des informations utiles sur les bords respectifs de votre graphique. – Arkady

+0

Darn, .net ne supporte pas vraiment les tuples ou les ensembles. Merci pour l'idée cependant! – RCIX

1

Serait-il possible d'utiliser une liste d'objets KeyValuePair? Comme ça?

List<KeyValuePair<ObjectA, ObjectB>> list = new List<KeyValuePair<ObjectA, ObjectB>>(); 

Je n'ai pas VS devant moi en ce moment, donc je ne suis pas sûr d'avoir la syntaxe 100% à droite, mais nous espérons que cela aide.

+0

Cela peut fonctionner, mais que se passe-t-il lorsque je veux stocker 3 ensembles ou plus d'éléments connexes? – RCIX

+0

Dans ce cas, vous devrez examiner l'implémentation d'un nouvel objet à fournir à la liste . – jasonh

Questions connexes