//刪除 map 容器中指定位置的鍵值對
iterator erase (const_iterator position);
注意,如果刪除的鍵值對位於 map 容器中最後的位置,則該方法返回的疊代器指向的是最後一個鍵值對之後的位置(等同於 end() 成員方法返回的疊代器)。
下面程式演示了 erase() 成員方法的用法:#include <iostream> #include <map> // map #include <string> // string using namespace std; int main() { //建立並初始化 map 容器 map<std::string, std::string>myMap{ {"C語言教學", "http://c.biancheng.net/c/"}, {"Python教學", "http://c.biancheng.net/python/"}, {"STL教學", "http://c.biancheng.net/stl/"} }; //輸出myMap容器儲存鍵值對的個數 cout <<"myMap size = " << myMap.size() << endl; //建立一個指向要刪除的鍵值對的疊代器 map<string, string>::iterator iter = ++myMap.begin(); //執行刪除操作 map<string, string>::iterator ret = myMap.erase(iter); //輸出當前 myMap 容器中剩餘鍵值對的個數 cout << "new myMap size = " << myMap.size() << endl; //輸出 erase() 方法返回的疊代器指向的鍵值對 cout << ret->first << " " << ret->second << endl; return 0; }程式執行結果為:
myMap size = 3
new myMap size = 2
STL教學 http://c.biancheng.net/stl/
//刪除 map 容器中鍵為 k 的鍵值對
size_type erase (const key_type& k);
#include <iostream> #include <map> // map #include <string> // string using namespace std; int main() { //建立並初始化 map 容器 map<std::string, std::string>myMap{ {"C語言教學", "http://c.biancheng.net/c/"}, {"Python教學", "http://c.biancheng.net/python/"}, {"STL教學", "http://c.biancheng.net/stl/"} }; //輸出myMap容器儲存鍵值對的個數 cout <<"myMap size = " << myMap.size() << endl; //刪除 myMap 容器鍵為 "Python教學" 的鍵值對 int num = myMap.erase("Python教學"); //輸出 myMap 容器中剩餘鍵值對的數量 cout << "new myMap size = " << myMap.size() << endl; //輸出 erase() 方法的返回值 cout << "num = " << num << endl; return 0; }程式執行結果為:
myMap size = 3
new myMap size = 2
num = 1
//刪除 map 容器中位於 [first,last) 區域內的所有鍵值對
iterator erase (const_iterator first, const_iterator last);
舉個例子:注意,如果 [fist,last) 範圍之後,不再有任何鍵值對,則 erase() 方法返回的疊代器將指向 map 容器最後一個鍵值對之後的位置(等同於 end() 成員方法返回的疊代器)。
#include <iostream> #include <map> // map #include <string> // string using namespace std; int main() { //建立並初始化 map 容器 map<std::string, std::string>myMap{ {"C語言教學", "http://c.biancheng.net/c/"}, {"Python教學", "http://c.biancheng.net/python/"}, {"STL教學", "http://c.biancheng.net/stl/"} }; //輸出myMap容器儲存鍵值對的個數 cout <<"myMap size = " << myMap.size() << endl; map<string, string>::iterator first = myMap.begin(); map<string, string>::iterator last = --myMap.end(); map<string, string>::iterator ret = myMap.erase(first,last); cout << "new myMap size = " << myMap.size() << endl; cout << ret->first << " " << ret->second << endl; return 0; }程式執行結果為:
myMap size = 3
new myMap size = 1
STL教學 http://c.biancheng.net/stl/
注意,[first,last) 為半閉半開區間,這意味著 erase() 方法會從 first 指向的鍵值對開始刪除(包括 first 指向的鍵值對),一直刪到 last 指向鍵值對的前面那個鍵值對。
void clear()
可以看到,該方法不需要傳入任何引數,也不需要接收任何返回值。#include <iostream> #include <map> // map #include <string> // string using namespace std; int main() { //建立並初始化 map 容器 map<std::string, std::string>myMap{ {"C語言教學", "http://c.biancheng.net/c/"}, {"Python教學", "http://c.biancheng.net/python/"}, {"STL教學", "http://c.biancheng.net/stl/"} }; //輸出myMap容器儲存鍵值對的個數 cout <<"myMap size = " << myMap.size() << endl; //清除 myMap 容器中所有的鍵值對 myMap.clear(); cout << "new myMap size = " << myMap.size() << endl; return 0; }程式執行結果為:
myMap size = 3
new myMap size = 0