可以說我們有std :: map,我們希望迭代。這兩次迭代之間有哪些優點/缺點(或者主要區別)?在C++中迭代STL類11
map<string,int> m0 { { "name1", 20 }, { "name2", 30 }, { "name3", 40 } };
for(auto &it : m0)
it = m0 . erase(it);
和
for (auto it=m0.begin(); it!=m0.end();)
it = m0.erase(it);
第一個代碼是不是compalible,我不知道爲什麼,雖然在cppreference語法就像是第一位的。
'for(auto&it:m0)' - 即使您將變量命名爲「it」,它實際上並不是迭代器,而是對地圖元素的引用。 –
第一個在循環中不給你一個迭代器,它給你一個元素引用。你不能刪除使用它。 – Galik
'm0.clear();'有什麼問題? –