1

2つのマルチマップオブジェクトを比較して、それらが等しいかどうかを確認する必要があります

std :: equalを使用することで、2つのベクトルオブジェクトの等式を比較できることはわかっていますが、このアルゴリズムを使用してマルチマップオブジェクトと比較することは可能ですか?

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?**

上記のコードスニペットが正しくない場合、2つのマルチマップオブジェクトを比較するにはどうすればよいですか?(オブジェクトを反復処理してキーと値を1つずつ比較する必要はありません)ありがとう

4

1 に答える 1

2

あなたはそれらをと比較することができますoperator==

map_ == secMap_;

これにより、最初の等しくない要素が見つかるまで、要素が1つずつ内部的に比較されます。それを回避する方法はありません。実例は次のとおりです。

#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 に答える