80 votes

L'équivalent en C# de C++ map<string,double>.

Je veux conserver des totaux pour différents comptes. En C++, j'utiliserais la STL comme ceci :

map<string,double> accounts;

// Add some amounts to some accounts.
accounts["Fred"] += 4.56;
accounts["George"] += 1.00;
accounts["Fred"] += 1.00;

cout << "Fred owes me $" << accounts['Fred'] << endl;

Maintenant, comment puis-je faire la même chose en C# ?

107voto

ljs Points 16511

En gros

var accounts = new Dictionary<string, double>();

// Initialise to zero...

accounts["Fred"] = 0;
accounts["George"] = 0;
accounts["Fred"] = 0;

// Add cash.
accounts["Fred"] += 4.56;
accounts["George"] += 1.00;
accounts["Fred"] += 1.00;

Console.WriteLine("Fred owes me ${0}", accounts["Fred"]);

19voto

Daniel A. White Points 91889
Dictionary<string, double> accounts;

16voto

Paul Baker Points 3231

Bien que System.Collections.Generic.Dictionary corresponde à l'étiquette "hashmap" et fonctionne bien dans votre exemple, il n'est pas un équivalent exact de std::map de C++ - std::map est une collection ordonnée.

Si la commande est importante, vous devez utiliser SortedDictionary .

6voto

Daniel Pryden Points 22167

Vous voulez le Dictionnaire classe.

2voto

Jim Schubert Points 10234

Dictionary est le plus courant, mais vous pouvez utiliser d'autres types de collections, par exemple System.Collections.Generic.SynchronizedKeyedCollection, System.Collections.Hashtable, ou toute collection KeyValuePair.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X