lambda + for_each + löschen auf STL-Containern

8

Ich versuche ein einfaches Löschen jedes Zeigers in meiner Vektor / Liste / ... Funktion zu erhalten, die mit einer ultra coolen Lambda Funktion geschrieben wurde.

%Vor%

Ich habe keine Ahnung, was ich für die ??? füllen soll. Jede Hilfe wird sehr geschätzt!

UPDATE: So sollte es aussehen:

%Vor%     
rubenvb 19.05.2010, 20:00
quelle

3 Antworten

9

Zwei Fragen hier: die Lambda-Syntax selbst und wie man den Werttyp eines Containers bekommt:

Um die Funktion mydelete() für jeden Zeiger aufzurufen (vorausgesetzt, Sie haben eine mydelete() -Memberfunktion definiert):

%Vor%

Um sie mit dem Löschoperator zu löschen:

%Vor%

Außerdem ist Lambda nicht unbedingt das coolste neue Feature in C ++ 11 für ein gegebenes Problem:

%Vor%

Ich würde bemerken, dass es ein bisschen schwierig ist, einen const Verweis auf einen Container zu nehmen und alles darin zu löschen, obwohl die Sprache Sie nicht daran hindert, was Zeiger sind. Sind Sie sicher, dass es sich bei der Bedeutung und Verwendung Ihres Containers um eine "konstante" Operation handelt?

Wenn Sie diesen Code schreiben, profitieren Sie vielleicht von Boost Zeigercontainer oder Container von shared_ptr .

    
Steve Jessop 19.05.2010, 20:07
quelle
5

Wie wäre es mit etwas wie:

%Vor%

Beachten Sie, dass die Zeiger nicht aus dem Container entfernt werden. Daher müssen Sie sehr vorsichtig sein, was Sie mit dem Container und den darin enthaltenen Zeigern tun, nachdem Sie diese aufgerufen haben.

    
James McNellis 19.05.2010 20:06
quelle
1

Interessieren Sie sich speziell für Lambdas?

Wenn Sie Boost verwenden, können Sie schreiben:

%Vor%     
utnapistim 21.05.2010 10:09
quelle