l-Wert gibt const-Objekt an, während std :: map verwendet wird

8

Ich versuche std :: map wie im folgenden Beispiel zu verwenden:

%Vor%

Und mein Compiler (VS2010) gibt mir folgende Nachricht:

%Vor%

Ich kann nicht verstehen, warum opertor = aufgerufen wird, obwohl ich val in Lambda-Funktion als Referenz überlasse. Können Sie mir erklären, was ich falsch mache?

    
MaxP 02.05.2013, 08:06
quelle

1 Antwort

12

Sie können std::remove_if nicht mit einem assoziativen Container verwenden, da dieser Algorithmus die entfernten Elemente mit den folgenden überschreibt: Das Problem hierbei ist, dass die Schlüssel einer Karte konstant sind, um dies zu verhindern Sie (oder der std::remove_if -Algorithmus) können die interne Sortierung des Containers stören.

Um Elemente aus einer Karte bedingt zu entfernen, tun Sie dies eher:

%Vor%

Hier ist ein Live-Beispiel .

    
Andy Prowl 02.05.2013, 08:17
quelle

Tags und Links