1

我需要比较两个多图对象以确定它们是否相等

我知道通过使用 std::equal 我们可以比较两个向量对象的相等性,但是是否可以使用此算法与多图对象进行比较?

typedef std::multimap<std::string, std::string> HeaderMap;
HeaderMap _map,_secMap;


_map.insert(HeaderMap::value_type("A", "a"));
_map.insert(HeaderMap::value_type("B", "b"));

_secMap.insert(HeaderMap::value_type("A", "a"));
_secMap.insert(HeaderMap::value_type("B", "b"));



**std::equal(_map.begin(),_map.end(),_secMap.begin()); // is this true?**

如果上面的代码片段不正确,我如何比较两个多映射对象?(我不会迭代对象并一一比较键和值)谢谢

4

1 回答 1

2

您可以将它们与operator==

map_ == secMap_;

这将在内部逐个比较元素,直到找到第一个不相等的元素。没有办法避免这种情况。这是一个工作示例:

#include <map>
#include <string>
#include <iostream>

int main()
{
  typedef std::multimap<std::string, std::string> HeaderMap;

  HeaderMap m1, m2, m3;

  m1.insert(HeaderMap::value_type("A", "a"));
  m1.insert(HeaderMap::value_type("B", "b"));

  m2.insert(HeaderMap::value_type("A", "a"));
  m2.insert(HeaderMap::value_type("B", "b"));

  m3.insert(HeaderMap::value_type("A", "a"));
  m3.insert(HeaderMap::value_type("B", "b"));
  m3.insert(HeaderMap::value_type("C", "c"));


  std::cout << std::boolalpha;
  std::cout << (m1==m2) << " " << (m1==m3) << std::endl;    
}

输出:

真假

请记住,带有前导下划线的名称是为实现保留的,因此您不应使用它们。

于 2013-03-25T09:42:26.523 回答