2016-04-01 1 views
2

So in C#, ich habe etwas Ähnliches wie die folgenden:C++ 's entspricht C#' s Wörterbuch und Liste

Dictionary<string, List<string>> 

Was ist der effizienteste Weg, dass in C++ zu tun? Ich weiß, dass C++ 'map' und 'list' hat, aber ich bin immer noch in der Pseudocode-Phase, in der ich diese Funktion schreibe, also habe ich mich gefragt, ob sowas in C++ überhaupt möglich ist. Wenn ja, wie lässt sich diese äquivalente Datenstruktur am besten erstellen?

Dank

+0

std :: map, std :: unordered_map – Starl1ght

+0

'std: : map > –

Antwort

4

Also ich frage mich, ob so etwas in C++

möglich ist 210

Ja. Die STL-Funktionen sind eine Vielzahl verschiedener Container: http://www.cplusplus.com/reference/stl/.

Wenn ja, wie ist der beste Weg, um diese äquivalente Datenstruktur zu machen?

Das hängt von Ihren Anforderungen ab. Zum Beispiel std::vector vs std::list (siehe here für weitere Informationen)

Für einen einfachen Fall würde ich nur empfehlen, so etwas zu verwenden:

#include <vector> 
#include <map> 
#include <string> 

int main() 
{ 
    std::map<std::string, std::vector<std::string>> map_of_strings; 

    map_of_strings["a"] = { "1", "2", "3" }; 
    map_of_strings["b"] = { "4", "5", "6" }; 
    map_of_strings["c"] = { "7", "8", "9" }; 

    return 0; 
} 
+0

Dies wird nur Informationen aus einer Datei lesen und dann in eine andere Datei im XML-Format schreiben. Der Schlüssel des Wörterbuchs/der Karte wird ein äußerer Knoten sein, während die Liste/der Vektor, die sich in dem 'Wert'-Punkt dieses Wörterbuchs befinden, die inneren Knoten sein werden. Das Problem ist, dass es ziemlich groß werden kann, so dass der Overhead des Speichers ein Problem sein wird. Der Pluspunkt ist, dass nach dem Schreiben des Wörterbuchs nicht viel geändert werden muss (Hinzufügen, Ändern usw.), außer das Schreiben in die xml in einer einfachen verschachtelten Schleife (für jeden Schlüssel im Wörterbuch schreiben Sie alle Werte der Liste)). –

1

Sie verwenden können: map<string, vector<string>>. Map ist am nächsten an C# Dictionary und Vector an C# List.

Abstrahieren wir weg von jeder Sprache gibt es:

Resizable Arrays - List in C#, Vector in C++

Kollektionen/Container von Key Value-Paare - Dictionary in C# und Map in C++