std::multimap是否存在某几对键值对
时间: 2023-08-17 17:11:02 浏览: 133
关于map的 一个key对应多个value
要判断`std::multimap`是否存在某几对键值对,您可以使用迭代器遍历`std::multimap`,并逐个比较键和值。
以下是一个示例代码:
```cpp
#include <iostream>
#include <map>
int main() {
std::multimap<int, std::string> myMap;
myMap.insert(std::make_pair(1, "apple"));
myMap.insert(std::make_pair(2, "banana"));
myMap.insert(std::make_pair(2, "cherry"));
myMap.insert(std::make_pair(3, "durian"));
std::pair<int, std::string> targetPairs[] = {
{2, "banana"},
{3, "apple"}
};
bool foundAll = true;
for (const auto& pair : targetPairs) {
bool found = false;
auto range = myMap.equal_range(pair.first);
for (auto it = range.first; it != range.second; ++it) {
if (it->second == pair.second) {
found = true;
break;
}
}
if (!found) {
foundAll = false;
break;
}
}
if (foundAll) {
std::cout << "Found all the specified key-value pairs." << std::endl;
} else {
std::cout << "Did not find all the specified key-value pairs." << std::endl;
}
return 0;
}
```
在上面的代码中,我们创建了一个`std::multimap`对象`myMap`,并插入了几个键值对。然后,我们指定了目标键值对数组`targetPairs`,其中每个元素是一个键值对。接下来,我们使用迭代器遍历`targetPairs`数组,并逐个比较键和值。对于每个目标键值对,我们使用`equal_range()`函数获取与目标键匹配的键值对范围,然后在范围内进行遍历,与目标值进行比较。如果找到匹配的键值对,则将`found`标志设置为`true`,并退出内部循环。如果没有找到匹配的键值对,则将`foundAll`标志设置为`false`,并退出外部循环。最后,根据`foundAll`标志输出结果。
请注意,上述代码假设每个目标键只有一个匹配的值。如果您的需求是允许多个匹配的值,可以相应地修改代码。
阅读全文