C ++中用于Set of Pairs的自定义集合比较器

时间:2017-01-23 22:40:03

标签: c++ set

我有两套,Set1,Set2。两者都是成对的对(pair <int,int>)。

现在对于Set1,我想要像

这样的比较器
set1Comparator(pair p1, pair p2)
{
      if(p1.first != p2.first)
              return p1.first < p2.first;
      else
              return p1.second < p2.second;
}

对于Set2,我想要像

这样的比较器
 set2Comparator(pair p1, pair p2)
{
      if(p1.first != p2.first)
              return p1.first > p2.first;
      else
              return p1.second > p2.second;
}

请帮忙。 仅供参考,我在c ++设置比较器上检查了很多链接,但是没有一个可以帮我定义特定设置的set-comparator。(意味着如果我为一组对定义一个比较器,那么set1和set2将使用相同的比较器,其中set1和set2是成对的集合。

1 个答案:

答案 0 :(得分:1)

每当你声明一个std :: set时,你都可以指定比较类,比如

std::set< std::pair<foo,bar>, set1Comparator > myset1;

然后换另一组:

std::set< std::pair<foo,bar>, set2Comparator > myset2;

就这么简单:D