我正在编写Google测试单元测试,我想检查一下的内容unordered_map<std::string, std::string>
是否与a相同std::map<std::string, std::string>
我认为std::equal
不会起作用,因为元素std::map
按照标准排序.订单并不重要.
mic*_*srb 14
我不认为有更好的方法,只是遍历一个地图的所有元素,并检查它们是否存在于另一个地图中.如果您还检查元素的数量是否相同,您将知道地图是否完全相同.
例如:
template<typename K, typename E>
bool maps_equal(const std::map<K, E> &map, const std::unordered_map<K, E> &unordered_map) {
return
map.size() == unordered_map.size() &&
std::all_of(map.cbegin(), map.cend(), [&](const std::pair<const K, E> &item) {
auto iter = unordered_map.find(item.first);
return iter != unordered_map.end() && iter->second == item.second;
});
}
Run Code Online (Sandbox Code Playgroud)
您可以unordered_map
使用a 创建一个map
,然后比较两个unordered_map
.反之亦然.
std::unordered_map<std::string, std::string> m1;
std::map<std::string, std::string> m2;
std::unordered_map<std::string, std::string> m3(m2.begin(), m2.end());
if (m1 == m3) {}
Run Code Online (Sandbox Code Playgroud)