ChatGPT体验 AI绘画体验
C++中multimap怎么用?
提问人:ppw_crxis 时间:2023-04-16 公开状态:

提问人:ppw_crxis 时间:2023-04-16 公开状态:


multimap是C++ STL中的一个关联容器,可以将多个键值对映射到一个值上(键可以重复)。使用multimap前需要包含头文件<map>。下面是一些常用的操作:
1. 声明一个multimap
```C++
std::multimap<int, std::string> mymap;
```
上述声明一个空的multimap,它的键类型为int,值类型为string。
2. 插入键值对
```C++
mymap.insert(std::pair<int, std::string>(1, "apple"));
mymap.insert(std::make_pair(2, "banana"));
```
上述分别使用了pair和make_pair语法来插入两个键值对。
3. 使用迭代器遍历multimap
```C++
for (auto iter = mymap.begin(); iter != mymap.end(); ++iter) {
std::cout << iter->first << ": " << iter->second << std::endl;
}
```
上述使用auto类型推导声明迭代器变量iter,遍历了整个multimap,输出每个键值对。
4. 查找元素
```C++
auto iter = mymap.find(2);
if (iter != mymap.end()) {
std::cout << iter->second << std::endl;
}
```
上述通过find函数查找键为2的元素,如果找到了就输出对应的值。
5. 删除元素
```C++
mymap.erase(1); // 删除键为1的元素
```
上述使用erase函数删除键为1的元素。
6. 统计元素个数
```C++
std::cout << mymap.count(2) << std::endl;
```
上述输出键为2的元素个数。
注意,由于multimap是一个关联容器,插入元素时会自动按键值排序。如果要保持插入时的顺序,可以使用另一个容器list来保存键值对。