#include
#include
// 假设Mod是一个结构体或类
struct Mod {
// 模块的定义
int value;
// 其他成员…
};
// 计算两个multimap的交集
std::multimap<int, Mod> intersection(const std::multimap<int, Mod>& map1, const std::multimap<int, Mod>& map2) {
std::multimap<int, Mod> result;
for (const auto& entry : map1) {
auto range = map2.equal_range(entry.first);
for (auto it = range.first; it != range.second; ++it) {
if (it->second.value == entry.second.value) {
// 找到相同的元素,加入交集结果
result.insert({entry.first, entry.second});
break; // 可选择跳出循环,因为每个键只需一个匹配
}
}
}
return result;
}
int main() {
std::multimap<int, Mod> bit1;
std::multimap<int, Mod> bit2;
// 示例数据
bit1.insert({1, Mod{10}});
bit1.insert({2, Mod{20}});
bit1.insert({2, Mod{30}});
bit1.insert({3, Mod{40}});
bit2.insert({2, Mod{30}});
bit2.insert({3, Mod{40}});
bit2.insert({4, Mod{50}});
// 计算两个multimap的交集
std::multimap<int, Mod> intersectResult = intersection(bit1, bit2);
// 输出结果
std::cout << "交集结果:" << std::endl;
for (const auto& entry : intersectResult) {
std::cout << "Key: " << entry.first << ", Value: " << entry.second.value << std::endl;
}
return 0;
}