C++メモ:STL容器の循環削除

525 ワード

vectorの反復削除
    vector vec;
    for(auto i=vec.begin();i!=vec.end();)//                    i++
    {
        vec.erase(i);
    }

mapの反復削除
    map m;
    for(auto i=m.begin();i!=m.end();i++)//map     
    {
        m.erase(i);
    }

vectorのこのような書き方は直感的ではありません.forサイクルの中で容器の妹紅を変えないほうがいいです.C++14で改善すべき書き方を教えてください.
    auto i=remove_if(vec.begin(),vec.end(),[](const auto& v){return v==0;});
    vec.erase(i,vec.end());