Zählen die Anzahl der gleichen Werte in der Karte

ist dort jeder Befehl zählt die Anzahl der gleichen Werte in einer Karte?

wie:

map<int, string> m;
m[1] = "A";
m[22] = "A";
m[53] = "C";
m[12] = "A";
m[6] = "A";

int count = m.count("A");//4

oder sollte ich einfach nur schreiben es selbst, da es nicht zu hart?

  • Die erste Sache, die den Sinn kam, war zu erstellen, ein weiteres std::map<string , int> welches verwendet wird zum zählen der Häufigkeit der einzelnen .second
  • Das sollte das Letzte, was mir einfällt. Du bist einfach Einführung viel Komplexität zu erreichen, eine sehr einfache Aufgabe, für die es bereits toos.
  • Dibling: Was meinst du mit viel Komplexität? Wenn Sie sehen, von den Antworten unten, ohne C++0x unterstützen, müssen Sie eine angemessene Menge an code zu schreiben, wenn Sie die Nutzung von STL-count_if. Ich bin geneigt zu glauben, dass mit einer anderen Karte benötigen weniger Menge an code. Auch mit Karte hat eine bessere Laufzeit-Komplexität also O(log n), während Sie gehen durch alle map-Elemente, wenn Sie count_if d.h. O(n)
  • Mit einem zweiten map zum speichern von Frequenzen ist besser, wenn Sie brauchen, um eine große Anzahl von zählt. Dieser Ansatz erfordert auch, dass die Elemente, die im container gespeichert sind, vergleichbar. Wenn Sie nur eine einzige zählen, dann ist es viel besser, aufzählen der Elemente mit count_if.
  • McNellis: ich sehe Ihren Punkt, und ich denke auch, deine Antwort ist schön und natürlich lehrreich. Aber trotzdem, es ist nicht die Beantwortung meiner Frage zu John Dibling über welche Arten von Komplexität ist die Verwendung einer zweiten Karte imposant, im Vergleich zu mit, um eine Funktion definieren, Objekt =). Ja, es erfordert operator< umgesetzt werden (wahrscheinlich irrelevant, wenn der Schlüssel ist std::string). Ja, es ist Verschwendung von Speicher, wenn man nur zählen, der es mal (auch wenn poster nicht geben). Aber Komplexität in der Umsetzung? Ich nicht kaufen =)
InformationsquelleAutor calccrypto | 2011-04-01
Schreibe einen Kommentar