boost :: bimap找到一个关系

时间:2013-04-22 19:09:54

标签: boost find bimap

我只想问boost::bimap是否提供了一种在bimap中找到关系的方法? 因为我在两边都有一个带有unordered_multiset的bimap,所以我需要一个函数来检查这些是否是两个对象之间的关系。 我读了一些文档,但没有找到。

class MyClass
{
  std::string s1;
  std::string s2;
  bool operator == (MyClass const& myClass)
  {
    return (s1 == myClass.s1 && s2 == myClass.s2);
  }
};

namespace std
{
  template<>
  struct hash<MyClass>
  {
    std::size_t operator()(const MyClass& myClass) const
    {
      std::size_t Seed = 0;
      boost::hash_combine(Seed, myClass.s1);
      boost::hash_combine(Seed, myClass.s2);
      return Seed;
    }
  }
}


int main()
{
  typedef boost::bimaps::bimap<boost::bimaps::unordered_multiset_of<client,std::hash<MyClass>, std::equal_to>, boost::bimaps::bimap<boost::bimaps::unordered_multiset_of<client,std::hash<MyClass>, std::equal_to>> MyBiMap;

  MyBiMap MAP;

  Map.value_type myRelation;
  MAP.insert(myRelation(myClassObject1,myClassObject2));
  MAP.insert(myRelation(myClassObject1,myClassObject4));
  MAP.insert(myRelation(myClassObject3,myClassObject4));
  MAP.insert(myRelation(myClassObject3,myClassObject6));
  MAP.insert(myRelation(myClassObject5,myClassObject2));
//    I want to check whether there is a relation between myClassObject1,myClassObject4
//    for example MAP.find(myRelation(myClassObject1,myClassObject4)) returns the iterator
//    and MAP.find(myRelation(myClassObject1,myClassObject6)) returns end();
    }

0 个答案:

没有答案