1. 程式人生 > >vector、list、map、set中的erase用法

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

(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;  
    }  
}