vector、list、map、set中的erase用法
阿新 • • 發佈:2019-01-05
(1)list與vector
list與vector中的erase用法相同,它們的 erase 函式會返回指向下一個元素的迭代器,因此在遍歷時,只需要 it = c.erase(it); 即可。如示例程式碼:
vector<int>::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<int, int>::iterator it = m.begin();
for (; it != m.end();)
{
if (it->fist == 10) {
m.erase(it++);
}
else {
++it;
}
}