Sagen wir, wir haben std :: map und wir wollen durchlaufen. Was sind Vorteile/Nachteile (oder was ist der Hauptunterschied) zwischen diesen beiden Iterationen?Iterieren durch STL-Klassen in C++ 11
map<string,int> m0 { { "name1", 20 }, { "name2", 30 }, { "name3", 40 } };
for(auto &it : m0)
it = m0 . erase(it);
und
for (auto it=m0.begin(); it!=m0.end();)
it = m0.erase(it);
Der erste Code ist nicht compalible und ich weiß nicht, warum, obwohl in cppreference Syntax wie die erste.
'for (auto & it: m0)' - Obwohl Sie die Variable 'it' benannt haben, handelt es sich nicht um einen Iterator, sondern um eine Referenz auf das Element der Karte. –
Der erste gibt Ihnen keinen Iterator in der Schleife, der Ihnen eine Elementreferenz gibt. Sie können es nicht löschen. – Galik
Was ist falsch mit 'm0.clear();'? –