两个相同map容器比较实值,不重复比较
时间: 2024-01-11 12:05:21 浏览: 121
如果您想比较两个相同的 map 容器的实值是否相同且不重复,可以使用以下方法:
1. 遍历 map 容器,将值存储在一个 set 容器中,如果 set 容器的大小等于 map 容器的大小,则说明实值不重复;然后遍历两个 map 容器,比较每个键对应的值是否相同。如果两个条件都满足,则说明实值不重复且相同。
具体实现可以参考以下示例代码:
```c++
#include <iostream>
#include <map>
#include <set>
using namespace std;
bool compareMaps(map<int, int>& map1, map<int, int>& map2) {
set<int> set1;
set<int> set2;
for (auto& p : map1) {
set1.insert(p.second);
}
for (auto& p : map2) {
set2.insert(p.second);
}
if (set1.size() != map1.size() || set2.size() != map2.size()) {
return false;
}
for (auto& p : map1) {
if (map2[p.first] != p.second) {
return false;
}
}
return true;
}
int main() {
map<int, int> map1{{1, 2}, {3, 4}, {5, 6}};
map<int, int> map2{{5, 6}, {3, 4}, {1, 2}};
map<int, int> map3{{1, 2}, {3, 4}, {5, 6}, {7, 8}};
map<int, int> map4{{1, 2}, {3, 4}, {5, 7}};
cout << compareMaps(map1, map2) << endl; // expect true
cout << compareMaps(map1, map3) << endl; // expect false
cout << compareMaps(map1, map4) << endl; // expect false
return 0;
}
```
阅读全文