一、erase方法的基本用法
在C++的STL中,map是一種非常常用的關聯容器,又稱為字典或者映射。在使用map時,常常需要添加、刪除元素。其中,erase方法是map容器中常用的刪除元素的方法。
erase方法即為刪除操作,可以刪除指定的元素或整個map。erase()方法有多種用法:
void erase(iterator position); size_type erase(const key_type& k); void erase(iterator first, iterator last);
第一種用法是刪除迭代器指向的元素,第二種用法是刪除與某個鍵值相等的元素,第三種用法是刪除從 first 代表的位置到 last 代表的位置內的所有元素。
二、刪除指定元素
假如我們有一個map,其中記錄了一組學生的名字和對應的學號。我們需要刪除其中學號為”20210001″的學生信息。使用erase方法,可以通過以下方式進行操作:
#include <map> #include <string> using namespace std; int main() { map<string, string> studentMap; studentMap["123456"] = "張三"; studentMap["20210001"] = "李四"; studentMap["20210002"] = "王五"; // 刪除學號為"20210001"的學生信息 studentMap.erase("20210001"); // 遍歷輸出 for (auto iter = studentMap.begin(); iter != studentMap.end(); ++iter) { cout << iter->first << ":" << iter->second << endl; } return 0; }
以上代碼中,使用了erase方法刪除了學號為”20210001″的學生信息。在遍歷時,已經可以看到該元素被成功刪除了。
三、刪除指定範圍內的元素
假設我們需要刪除map中前2個元素,可以使用以下代碼:
#include <map> #include <string> using namespace std; int main() { map<string, string> studentMap; studentMap["123456"] = "張三"; studentMap["20210001"] = "李四"; studentMap["20210002"] = "王五"; // 刪除前兩個元素 auto endIter = studentMap.begin(); advance(endIter, 2); studentMap.erase(studentMap.begin(), endIter); // 遍歷輸出 for (auto iter = studentMap.begin(); iter != studentMap.end(); ++iter) { cout << iter->first << ":" << iter->second << endl; } return 0; }
以上代碼中,使用erase方法刪除了前兩個元素。其中,通過advance函數將迭代器移動到第三個元素的位置,然後將前兩個元素刪除。在遍歷時,可以發現前兩個元素已經被成功刪除了。
四、刪除特定範圍內的元素
假設我們需要刪除一定範圍內的元素,比如”20210001″到”20210002″之間的元素,可以使用以下代碼:
#include <map> #include <string> using namespace std; int main() { map<string, string> studentMap; studentMap["123456"] = "張三"; studentMap["20210001"] = "李四"; studentMap["20210002"] = "王五"; studentMap["20210003"] = "趙六"; // 刪除鍵值在"20210001"和"20210002"之間的元素(含"20210001"和"20210002") studentMap.erase(studentMap.lower_bound("20210001"), studentMap.upper_bound("20210002")); // 遍歷輸出 for (auto iter = studentMap.begin(); iter != studentMap.end(); ++iter) { cout << iter->first << ":" << iter->second << endl; } return 0; }
以上代碼中,使用erase方法刪除了鍵值在”20210001″和”20210002″之間的元素。其中,lower_bound和upper_bound函數用於查找鍵值大於等於”20210001″和鍵值大於”20210002″的迭代器,即需要刪除的範圍。在遍歷時,可以看到指定範圍內的元素已經被成功刪除了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/233582.html