vector、list、map、set中的erase用法

5890阅读 0评论2019-07-03 iibull
分类:其他平台

https://blog.csdn.net/zhaojunwuiris/article/details/80647653 

(1)list与vector
    list与vector中的erase用法相同,它们的 erase 函数会返回指向下一个元素的迭代器,因此在遍历时,只需要 it = c.erase(it); 即可。如示例代码:

vector::iterator it = vec.begin();  
for (; it != vec.end();)  
{  
    if (*it == 10) {  
        it = vec.erase(it);  
    }  
    else {  
        ++it;  
    }  


(2)map与set
    map与set中的erase用法相同,它们的 erase 函数返回值是 void,调用 erase 之后,当前迭代器会失效,无法再用于获取下一个迭代器。因此需要 erase 之前就获取指向下一个元素的迭代器。

map::iterator it = m.begin();  
for (; it != m.end();)  
{  
    if (it->fist == 10) {  
        m.erase(it++);  
    }  
    else {  
        ++it;  
    }  
}
上一篇:STL学习——三种常用序列容器vector,list,deque的比较
下一篇:在STM32添加看门狗