unordered_multimap查找所有key为特定值
时间: 2023-08-15 12:14:25 浏览: 107
如果你想要查找所有key为特定值的元素,可以使用`equal_range()`函数。这个函数返回一个迭代器对,包含所有key等于指定值的元素。以下是一个示例代码:
```c++
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_multimap<int, std::string> umap = {
{1, "apple"},
{2, "banana"},
{3, "cherry"},
{2, "date"},
{1, "elderberry"}
};
auto range = umap.equal_range(2);
for (auto it = range.first; it != range.second; ++it) {
std::cout << it->first << " " << it->second << std::endl;
}
return 0;
}
```
在上面的代码中,我们使用了`equal_range()`函数来查找所有key等于2的元素,并使用迭代器遍历打印输出。输出结果如下:
```
2 banana
2 date
```
相关问题
如何遍历unordered_multimap中所有元素?
要遍历 `unordered_multimap` 中的所有元素,可以使用迭代器来完成。使用循环来遍历从 `begin()` 到 `end()` 的所有元素。
以下是示例代码:
```cpp
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_multimap<int, std::string> myMap;
myMap.insert(std::make_pair(1, "apple"));
myMap.insert(std::make_pair(2, "banana"));
myMap.insert(std::make_pair(1, "orange"));
myMap.insert(std::make_pair(3, "grape"));
myMap.insert(std::make_pair(1, "melon"));
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
std::cout << it->second << std::endl;
}
return 0;
}
```
在上面的示例中,我们创建了一个 `unordered_multimap` 并插入了一些键值对。然后,我们使用循环遍历从 `begin()` 到 `end()` 的所有元素,并打印每个元素的值。
输出将是:
```
apple
orange
melon
banana
grape
```
这样,你就可以遍历 `unordered_multimap` 中的所有元素了。
unordered_multimap和unordered_mulset
unordered_multimap和unordered_multiset是C++ STL库中的两个容器,它们都是基于哈希表实现的。它们的主要区别在于:
unordered_multimap是一个关联容器,其中的元素是键值对(key-value pair),允许重复的key存在。因此,当我们需要使用多个键来映射到同一个值时,可以使用unordered_multimap。
unordered_multiset是一个关联容器,其中的元素是值类型(value type),允许重复的值存在。因此,当我们需要存储多个相同的元素时,可以使用unordered_multiset。
总之,unordered_multimap和unordered_multiset都是非常有用的容器,可以在实际开发中提高代码的效率和可读性。