在 C++ 中,`std::map` 是一个排序的关联容器,存储键值对元素,其中键是唯一的。键值对是根据键排序的。
`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` 会自动调整,使所有其他元素保持排序。请注意,清除元素后不能使用指向已清除元素的迭代器,否则会导致未定义的行为。