本篇將介紹如何使用 C++ map 刪除元素的 3 種方式,刪除 map 的元素有 3 種方式,
分別是
- map 刪除指定的元素
- map 刪除迭代器 iterator 指向的元素
- map 刪除範圍內的元素
那就開始來介紹吧!
map 刪除指定的元素
C++ map 根據傳入的 key 值去刪除該元素,
1 | // g++ std-map-erase.cpp -o a.out -std=c++11 |
結果如下,
1 | 3 John |
那如果 map 刪除不存在的元素會發生什麼事呢?
1 | // g++ std-map-erase2.cpp -o a.out -std=c++11 |
map 刪除不存在的元素並不會造成什麼 crash 這種嚴重問題,他反而會回傳一個數量告訴你它刪除了多少個元素,以這個例子來說 erase(1)
是刪除了 1 個元素,erase(2)
是刪除了 0 個元素,結果如下,
1 | 1 |
erase()
回傳的是 size_type,實際上是什麼變數型態,可以利用這篇的技巧來印出變數型態。
map 刪除迭代器 iterator 指向的元素
C++ map 根據帶入的 iterator 迭代器去刪除該元素,
1 | // g++ std-map-erase3.cpp -o a.out -std=c++11 |
輸出結果如下,
1 | 1 Tom |
來看看另外一種 map 的例子,
1 | // g++ std-map-erase4.cpp -o a.out -std=c++11 |
輸出結果如下,
1 | Tiffany 5 |
map 刪除範圍內的元素
C++ map 根據帶入兩個 iterator 迭代器的範圍去刪除,這邊先用 find 來找好要刪除範圍的第一個 iter 與最後一個 iter,
1 | // g++ std-map-erase5.cpp -o a.out -std=c++11 |
結果如下,
1 | 1 Tom |
如果要刪除所有的元素的話可以用 clear()
,或者指定頭 begin()
到尾 end()
也可以,用法如下,
1 | studentMap.erase(studentMap.begin(), studentMap.end()); |
其它參考
map::erase - C++ Reference
http://www.cplusplus.com/reference/map/map/erase/
其它相關文章推薦
如果你想學習 C++ 相關技術,可以參考看看下面的文章,
C/C++ 新手入門教學懶人包
std::map 用法與範例
std::unordered_map 用法與範例
std::vector 用法與範例
std::deque 介紹與用法
std::queue 用法與範例
std::thread 用法與範例
std::mutex 用法與範例
std::find 用法與範例
std::sort 用法與範例
std::random_shuffle 產生不重複的隨機亂數
std::shared_ptr 用法與範例
std::async 用法與範例