【问题标题】:Comparing two multimap objects in c++在 C++ 中比较两个多映射对象
【发布时间】:2013-03-14 18:00:32
【问题描述】:

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

我知道通过使用 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?**

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

【问题讨论】:

  • 您希望我们为您运行代码并告诉您结果吗?
  • FikTik :> 不仅建议我使用它与多地图对象进行比较。如果它们的内容相等,则返回 true,否则返回 flase。
  • Jonathan Potter :> 这些不是同一个问题

标签: c++ stl


【解决方案1】:

您可以将它们与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;    
}

输出:

真假

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

【讨论】:

    猜你喜欢
    • 2018-04-08
    • 1970-01-01
    • 2022-01-04
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    相关资源
    最近更新 更多