在 C++ 中,`std::map` 是一個排序的關聯(lián)容器,存儲鍵值對元素,其中鍵是唯一的。鍵值對是根據鍵排序的。
`std::map` 提供了幾種刪除元素的方法:
1. `erase(const key_type& k)`: 刪除鍵為 `k` 的元素。
2. `erase(const_iterator pos)`: 刪除迭代器 `pos` 指向的元素。
3. `erase(const_iterator first, const_iterator last)`: 刪除迭代器 `first` 和 `last` 范圍內的元素。
4. `clear()`: 清除所有元素。
以下是一個使用這些函數的例子:
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> myMap;
// insert some elements
myMap.insert(std::make_pair(1, "Apple"));
myMap.insert(std::make_pair(2, "Banana"));
myMap.insert(std::make_pair(3, "Cherry"));
// erase element with key 2
myMap.erase(2);
// erase element at the beginning of map
myMap.erase(myMap.begin());
// erase all elements
myMap.clear();
return 0;
}
在這個例子中,首先插入了三個元素,然后刪除了鍵為2的元素,然后刪除了迭代器 `begin()` 指向的元素(即,鍵最小的元素),最后清除了所有元素。
當你調用 `erase` 函數時,`std::map` 會自動調整,使所有其他元素保持排序。請注意,清除元素后不能使用指向已清除元素的迭代器,否則會導致未定義的行為。