unordered_map可以比较是否相同吗
时间: 2023-07-23 14:16:14 浏览: 403
C++11 unordered_map与map(插入,遍历,Find)效率对比。
不可以直接比较两个unordered_map是否相同,因为unordered_map是一个关联容器,其元素的顺序是无序的,因此不能像比较vector或array那样直接进行元素比较。但是,我们可以通过迭代器遍历两个unordered_map中的所有元素,然后逐一比较它们是否相等。下面是一个示例代码:
```c++
#include <iostream>
#include <unordered_map>
int main()
{
std::unordered_map<int, int> map1 = {{1, 2}, {3, 4}, {5, 6}};
std::unordered_map<int, int> map2 = {{3, 4}, {5, 6}, {1, 2}};
if (map1.size() != map2.size()) {
std::cout << "map1 and map2 are not equal\n";
return 0;
}
for (auto it = map1.begin(); it != map1.end(); ++it) {
auto it2 = map2.find(it->first);
if (it2 == map2.end() || it2->second != it->second) {
std::cout << "map1 and map2 are not equal\n";
return 0;
}
}
std::cout << "map1 and map2 are equal\n";
return 0;
}
```
这里我们通过遍历map1中的每个元素,然后在map2中查找对应的元素,并进行值的比较,如果所有元素都相等,则说明这两个unordered_map相等。
阅读全文