86 Stimmen

C#-Entsprechung von C++ map<string,double>

Ich möchte einige Summen für verschiedene Konten behalten. In C++ würde ich STL wie folgt verwenden:

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;

Wie würde ich dasselbe in C# tun?

1 Stimmen

C#-Wörterbuch ist gleichbedeutend mit C++ unordered_map . Außerdem, C# SortedDictionary ist gleichbedeutend mit C++ Karte .

114voto

ljs Punkte 35909

Ungefähr:-

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"]);

0 Stimmen

Der einzige Nachteil ist, dass ich nicht weiß, wie die Konten im Voraus heißen werden.

0 Stimmen

Sie brauchen sie nicht im Voraus zu kennen. In den Beispielen werden der Kürze halber konstante Strings verwendet, aber Sie können auch String-Objekte verwenden.

1 Stimmen

Vielleicht sollte ich diese Bemerkung präzisieren, indem ich sage: "Ich kenne die Namen nicht und weiß nicht, wie viele Namen ich haben werde". Wenn ich in dieser Antwort Konten["Ron"] += 2,50; hinzufügen würde, würde eine Ausnahme ausgelöst. In Wirklichkeit werde ich eine XML-Datei mit vielen Namen und Zahlen einfügen.

20voto

Daniel A. White Punkte 180762
Dictionary<string, double> accounts;

17voto

user200783 Punkte 12949

Obwohl System.Collections.Generic.Dictionary mit dem Tag "hashmap" übereinstimmt und in Ihrem Beispiel gut funktionieren wird, ist es kein exaktes Äquivalent zu std::map in C++ - std::map ist eine geordnete Sammlung.

Wenn Ordnung wichtig ist, sollten Sie SortedDictionary .

6voto

Daniel Pryden Punkte 56882

Sie wollen die Wörterbuch Klasse.

2voto

Jim Schubert Punkte 19957

Dictionary ist die gebräuchlichste, aber Sie können auch andere Arten von Sammlungen verwenden, z.B. System.Collections.Generic.SynchronizedKeyedCollection, System.Collections.Hashtable, oder jede KeyValuePair-Sammlung

0 Stimmen

Ist es wahr, dass C# Dictionary äquivalent zu C++ unordered_map ist? Wenn ja, dann lautet die Frage: Was ist die C#-Äquivalenz von C++ map?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X