📅  最后修改于: 2023-12-03 15:35:31.654000             🧑  作者: Mango
unordered_multimap是C++ STL中的一个关联容器,它与unordered_map的不同之处在于允许键值相等的键存在,因此被称为“多重映射”。
unordered_multimap通常用于需要存储多个相同键的场景,比如:
unordered_multimap的用法类似于unordered_map,它提供了插入、删除、查找、遍历等基本操作。以下是一些常用的操作示例:
unordered_multimap<string, int> umap; // 定义unordered_multimap
// 通过insert()函数插入元素
umap.insert({"apple", 1});
umap.insert({"orange", 2});
umap.insert({"banana", 3});
umap.insert({"apple", 4}); // 可以插入键值相等的元素
// 或者使用emplace()函数
umap.emplace("grape", 5);
// 使用迭代器遍历unordered_multimap
for(auto iter = umap.begin(); iter != umap.end(); ++iter) {
cout << iter->first << ": " << iter->second << endl;
}
// 删除键为"apple"的元素
umap.erase("apple");
// 删除键值对为{"banana", 3}的元素
auto iter = umap.find("banana");
umap.erase(iter);
// 遍历unordered_multimap
for(auto& p : umap) {
cout << p.first << ": " << p.second << endl;
}
// 查找键为"apple"的元素
auto iter = umap.find("apple");
// 使用迭代器查找键为"orange"的元素
auto iter = umap.find("orange");
if(iter != umap.end()) {
cout << "Value found: " << iter->second << endl;
} else {
cout << "Value not found." << endl;
}
// 查找所有键值为"apple"的元素
auto range = umap.equal_range("apple");
for(auto iter = range.first; iter != range.second; ++iter) {
cout << iter->first << ": " << iter->second << endl;
}
unordered_multimap是一个非常实用的容器,可以在需要存储相同键的情况下发挥作用。与unordered_map相比,它还提供了更多的操作。需要注意的是,它是无序的,如果需要有序的关联容器,请使用multimap。