map容器的键必须唯一吗
时间: 2024-02-13 19:05:29 浏览: 58
在C++ STL中,`std::map`是一种基于红黑树实现的关联容器,它的键值对是按照键的大小进行排序的。由于红黑树的特性,`std::map`容器中的键是唯一的,即相同的键只能出现一次。如果插入一个已经存在的键,会覆盖之前的值。
但是,如果你需要存储重复的键,可以使用`std::multimap`容器。`std::multimap`容器和`std::map`相似,但它允许存储相同键的多个值。以下是一个示例代码:
```c++
#include <iostream>
#include <map>
#include <string>
int main() {
std::multimap<std::string, int> myMap;
// 插入键值对
myMap.insert(std::make_pair("apple", 50));
myMap.insert(std::make_pair("banana", 30));
myMap.insert(std::make_pair("orange", 40));
myMap.insert(std::make_pair("apple", 60));
// 遍历map
for (auto& kv : myMap) {
std::cout << kv.first << ": " << kv.second << std::endl;
}
return 0;
}
```
运行以上代码,输出如下:
```
apple: 50
apple: 60
banana: 30
orange: 40
```
可以看到,`std::multimap`容器可以存储重复的键,并且可以使用`insert`方法插入键值对。遍历`std::multimap`容器时,会按照键的顺序输出。
阅读全文