Anzahl der gleichen Werte in der Karte zählen

7

Gibt es einen Befehl, der die Anzahl der gleichen Werte in einer Karte zählt?

wie:

%Vor%

oder sollte ich es einfach selbst schreiben, da es nicht zu schwer ist?

    
calccrypto 01.04.2011, 18:55
quelle

5 Antworten

5

Sie können std::count mit einem benutzerdefinierten Wertparameter verwenden:

%Vor%     
Robᵩ 01.04.2011, 19:22
quelle
13

Sie können den count_if -Algorithmus mit einem benutzerdefinierten Prädikatfunktionsobjekt verwenden:

%Vor%

Verwendung:

%Vor%

Oder, für eine allgemeinere Lösung, können Sie ein apply_to_second Prädikat transformator schreiben:

%Vor%

Verwendung:

%Vor%

Wenn Sie einen Compiler haben, der Lambda-Ausdrücke unterstützt, benötigen Sie überhaupt keinen benutzerdefinierten Prädikat-Funktor. Sie können ein viel einfacheres Lambda verwenden:

%Vor%     
James McNellis 01.04.2011 19:06
quelle
2

STL's count_if und es ist manuell ziemlich machbar.

BEARBEITEN: Sorry sollte count_if nicht zählen

sein     
nevets1219 01.04.2011 18:58
quelle
0

map :: count zählt die Schlüssel und nicht das Element, daher wäre das Beispiel in Ihrer Frage falsch. Vielleicht möchten Sie eine zusätzliche Karte verwenden, um die Anzahl der einzelnen Werte zu verfolgen.

%Vor%     
ryaner 01.04.2011 19:05
quelle
0

Dies sollte generisch genug sein:

%Vor%

Dann kannst du es so benutzen:

%Vor%

Beachten Sie, dass dies nicht wirklich anders ist als bei vorherigen Antworten, aber es sollte mit allem wiederverwendbar sein, das auch über Paare iteriert. Benennen Sie Condition einfach in etwas Sinnvolleres um.

    
broc 01.04.2011 20:48
quelle

Tags und Links