首页 > 其他 > 详细

map和vector的erase操作

时间:2020-06-11 19:55:30      阅读:45      评论:0      收藏:0      [点我收藏+]

vector::erase()返回下一个iter:

技术分享图片

//清除[first, last)中的所有元素
iterator erase(iterator first, iterator last)
{
    iterator i = copy(last, finish, first);
    destroy(i, finish);
    finish = finish - (last - first);
    return first;
}
//清除某个位置上的元素
iterator erase(iterator position)
{
    if(position + 1 != end())    
        copy(position + 1, finish, position);
    --finish;
    destroy(finish);
    return position;
}

用法:

for(vector<int>::iterator it = vecInt.begin(); it != vecInt.end();)
{
    if(*it == 0)
    {
        it = vecInt.erase(it);
    }
    else
    {
        it++;
    }
}

 

map::erase()没有返回下一个iter:

(1) void erase (iterator position) { t.erase(position); }
(2) size_type erase (const key_type& x) { return t.erase(x); }
(3) void erase (iterator first, iterator last) { t.erase(first, last); }

技术分享图片

用法:

for(map<int,int>::iterator it = mapInt.begin(); it != mapInt.end();)
{
    if(it->second == 0)
    {
        mapInt.erase(it++);
    }
    else
    {
        it++;
    }
}

 

map和vector的erase操作

原文:https://www.cnblogs.com/Brickert/p/13095213.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!