c++ set和pair 的结合使用

当我们使用set集合时,当set集合是由两个简单变量组成时,我们可以自己定义结构体,自己定义重载小于号,就像如下所示:

  1. struct ju
  2. {
  3. int x,y;
  4. bool operator <(const ju &a)const //排序并且去重复
  5. {
  6. if(a.x != x)
  7. return a.x >x;
  8. return a.y > y;
  9. }
  10. }tt;

但是这样需要自己定义结构体,有时在结构中需要定义构造函数,如果只有两个变量,我们可以通过pair类型来实现,这样显得简洁。

struct RatioComp {

bool operator() (const pair<int, int>& A, const pair<int, int>& B) {

if (A.first * B.second < A.second * B.first) {

return true;

} else if (A.first * B.second == A.second * B.first) {

return A.first < B.first;

} else {

return false;

}

}

};

set<pair<int,int>,RatioComp>S;

//RatioComp结构体中定义的构造函数就是set集合排序规则。

时间: 2024-10-20 03:56:58

c++ set和pair 的结合使用的相关文章

C++学习 之pair

Pair类型概述 pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下: pair<int, string> a; 表示a中有两个类型,第一个元素是int型的,第二个元素是string类型的,如果创建pair的时候没有对其进行初始化,则调用默认构造函数对其初始化. pair<string, string> a("James", "Joy"); 也可以像上面一样在定义的时候直接对其初始化. 由于pair类型的使用比

C++ STL pair详解

一.解释: p { margin-bottom: 0.25cm; direction: ltr; color: #00000a; line-height: 120%; text-align: left; orphans: 2; widows: 2 } p.western { font-family: "Liberation Serif", serif; font-size: 12pt } p.cjk { font-family: "Noto Sans CJK SC Regul

C++ pair用法

 pair 默认对first升序,当first相同时对second升序: 类模板:template <class T1, class T2> struct pair 参数:T1是第一个值的数据类型,T2是第二个值的数据类型. 功能:pair将一对值组合成一个值,这一对值可以具有不同的数据类型(T1和T2),两个值可以分别用pair的两个公有函数first和second访问. 具体用法: 1.定义(构造): 1 pair<int, double> p1; //使用默认构造函数 2 p

RFID Exploration and Spoofer a bipolar transistor, a pair of FETs, and a rectifying full-bridge followed by a loading FET

RFID Exploration Louis Yi, Mary Ruthven, Kevin O'Toole, & Jay Patterson What did you do? We made an Radio Frequency ID (RFID) card reader and, while attempting to create a long-range spoofer, created an jammer which overcomes card's signals. The read

pair

这个是非常经典的树分治的题目,关于60分的做法.参见poj1741 按照树分治的惯例,先全局统计,然后再减掉重复的东西. 那么如何计算贡献呢? 我们按照poj1741的方法.先将满足一维的情况的数据全部放入一个树状数组里面,然后我们就能够一维统计了. 复杂度O(nlog2n) 代码也比较凑合.... #include<cstdlib> #include<cstdio> #include<cstring> #include<algorithm> #includ

关于模板pair的用法

在挑战程序设计竞赛中看到调用pair,就上网查了一下 类型申明有两种 template <class T1, class T2> struct pair typedef pairt<class T1,class T2> p;//p为任意的 调用起来就是 p.first=.. p.second=.. 当然,如果是是用第一种申明方式的话,还要加上pair<int, int>p; 这个可以和queue连用, 这样的话,对于二维的bfs或是写spfa也可以方便用queue

【BZOJ1786】[Ahoi2008]Pair 配对 DP

[BZOJ1786][Ahoi2008]Pair 配对 Description Input Output Sample Input 5 4 4 2 -1 -1 3 Sample Output 4 题解:结论!!!为了使逆序对最少,我们在-1位置填入的数一定是单调不减的.(可以用反证法证明,很简单.) 所以DP,我们用f[i][j]表示枚举到第i个数,上一个在-1位置填入的数是j个最少逆序对个数.然后转移也很简单~ #include <cstdio> #include <cstring&g

STL之pair及其非成员函数make_pair()

std::pair是一个结构模板,提供了一种将两个异构对象存储为一个单元的方法. 定义于头文件 <utility> template< class T1, class T2 > struct pair; 成员类型 Definition   成员对象 Type first_type T1         First T1 second_type T2   Second T2 1.定义(构造): pair<int, double> p1; //使用默认构造函数 pair&l

ural 2019 Pair: normal and paranormal

2019. Pair: normal and paranormal Time limit: 1.0 secondMemory limit: 64 MB If you find yourself in Nevada at an abandoned nuclear range during Halloween time, you’ll become a witness of an unusual show. Here Ghostbusters hold annual tests for new ve

UVa 1592 数据库(c++pair)

Input Input contains several datasets. The first line of each dataset contains two integer numbersn and m (1n10000, 1m10), the number of rows and columns in the table. The following n lines contain table rows. Each row hasm column values separated by