std::multimap重复元素
时间: 2023-09-15 17:20:06 浏览: 148
`std::multimap` 允许重复元素。当插入一个重复的元素时,它会被插入到容器中而不是替换掉原有的元素。如果你想删除所有重复的元素,可以使用 `std::multimap::equal_range` 函数来获取一个迭代器范围,然后用 `std::multimap::erase` 函数删除这个范围内的所有元素。以下是一个示例代码:
```c++
#include <iostream>
#include <map>
int main() {
std::multimap<int, std::string> mm;
mm.insert(std::make_pair(1, "apple"));
mm.insert(std::make_pair(2, "banana"));
mm.insert(std::make_pair(3, "orange"));
mm.insert(std::make_pair(1, "pear"));
mm.insert(std::make_pair(2, "peach"));
mm.insert(std::make_pair(3, "lemon"));
// 输出所有元素
for (auto it = mm.begin(); it != mm.end(); ++it) {
std::cout << it->first << ": " << it->second << std::endl;
}
// 删除所有键为 2 的元素
auto range = mm.equal_range(2);
mm.erase(range.first, range.second);
// 输出剩余元素
for (auto it = mm.begin(); it != mm.end(); ++it) {
std::cout << it->first << ": " << it->second << std::endl;
}
return 0;
}
```
输出结果为:
```
1: apple
1: pear
2: banana
2: peach
3: orange
3: lemon
1: apple
1: pear
3: orange
3: lemon
```
可以看到,重复的元素被保留了下来,而键为 2 的元素被删除了。
阅读全文