c++map与multimap的差别
时间: 2024-12-26 12:26:04 浏览: 6
### C++ 中 `map` 和 `multimap` 的区别
#### 键唯一性
在 C++ 标准库中,`std::map` 容器中的键是唯一的,即不允许存在两个相同的键。而 `std::multimap` 则允许存储多个具有相同键的元素[^2]。
#### 实现方式
无论是 `std::map` 还是 `std::multimap` 都通常通过红黑树实现,这使得它们能够提供对数时间复杂度的操作效率。然而,这种结构保持了内部节点有序排列的特点。
下面是一个简单的例子来展示两者的行为差异:
```cpp
#include <iostream>
#include <map>
#include <string>
int main() {
std::map<int, std::string> myMap;
std::multimap<int, std::string> myMultiMap;
// 插入到 map 中
myMap.insert(std::make_pair(1, "one"));
try {
myMap.insert(std::make_pair(1, "another one")); // 将会失败并返回 false
} catch (...) {}
// 插入到 multimap 中
myMultiMap.insert(std::make_pair(1, "first one"));
myMultiMap.insert(std::make_pair(1, "second one"));
// 输出 map 内容
for (auto& elem : myMap) {
std::cout << elem.first << ": " << elem.second << '\n';
}
// 输出 multimap 内容
for (auto& elem : myMultiMap) {
std::cout << elem.first << ": " << elem.second << '\n';
}
}
```
这段代码展示了如何向 `map` 和 `multimap` 添加元素以及遍历其中的内容。对于 `map` 来说,尝试插入重复键会被拒绝;而对于 `multimap` ,可以成功地添加多条记录拥有相同的键值。
阅读全文