Ich versuche ein einfaches Löschen jedes Zeigers in meiner Vektor/Liste/... Funktion mit einer ultra coolen Lambda-Funktion geschrieben.Lambda + for_each + löschen auf STL-Containern
template <typename T>
void delete_clear(T const& cont)
{
for_each(T.begin(), T.end(), [](???){ ???->delete() });
}
Ich habe keine Ahnung, was für die ??? 's ausfüllen. Jede Hilfe wird sehr geschätzt!
UPDATE: Dies ist, wie es aussehen sollte:
template <typename Container>
void delete_clear(Container &c)
{
for_each(c.begin(), c.end(), [](typename Container::value_type x){ delete x; });
c.clear();
}
Sie werden 'cont' nicht-const, um' clear() 'auf, nennen es machen müssen. Und rufen Sie es auf "cont", nicht T; -p –
Wenn Sie Pointer-Container benötigen, werfen Sie einen Blick auf die Boost Pointer Container-Bibliothek (http://www.boost.org/doc/libs/1_43_0/libs/ptr_container/ doc/ptr_container.html). – Philipp
Nehmen Sie keinen Behälter als Referenz. Verwenden Sie Iteratoren. – pmr