您好我想用两个单独的Map容器分隔multimap
multimap<string,string> MulMap // Multimap Container
map <string,string> DuplicateKeyValueMap
map <string,string> UniqueKeyValueMap
根据MulMap迭代,我可以使用count
和equal_range
分隔重复键和唯一键
我用谷歌搜索并获得了这种方法需要O(n log n)复杂度的信息。
有没有比这更好的方法来编码以实现O(n)复杂性?
答案 0 :(得分:1)
如果您只是想知道两个地图是否包含相同的元素,那么直接算法(即O(n))可以工作:
return m1.size() == m2.size() &&
std::equal(m1.begin(), m1.end(), m2.begin());
您必须至少查看一次每个唯一的地图元素,这样做也足够了。由于两张地图都是有序的,因此您可以在发现不匹配时立即停止。
在C ++ 14中,您可以使用更简单的四迭代器形式:
return std::equal(m1.begin(), m1.end(), m2.begin(), m2.end());