代码:(结构体外部重构Cmp函数)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <stack>
#include <map>
#include <set>
#include <queue>
#include <vector>
using namespace std;
struct cmp{
bool operator ()(const int &a,const int &b)const{
return a<b;
}
};
set<int,cmp>a;
set<int,cmp>::iterator it;
map<int,int,cmp> b;
priority_queue <int,vector<int>,cmp> q; //在优先队列里 定义顺序和内部顺序相反。
int x[110];
int main(){
a.insert(1);
a.insert(2);
a.insert(4);
it=a.lower_bound(1);
//cout<<*it<<endl;
b.insert(pair<int,int>(1,1));
b.insert(pair<int,int>(2,2));
//cout<<b.begin()->first;
x[0]=1,x[1]=2,x[2]=4;x[3]=-1;
cout<<*lower_bound(x,x+3,3,cmp());//cmp函数如果数组是递增序列,cmp函数里需要定义为a<b。 否则相反。
//cout<<*it<<endl;
}
代码:(结构体内部重构<比较)
#include <bits/stdc++.h>
#include <stdlib.h>
#include <time.h>
#define mem(a,b) memset(a,b,sizeof(a))
#define ll long long
using namespace std;
struct node{
int k;
bool operator < (const node &a)const{
return k>a.k;
}
}a1,a2;
set<node> s;
map<node,int> m;
int main()
{
a1.k=2;a2.k=3;
s.clear();
s.insert(a1);
s.insert(a2);
cout<<(*s.begin()).k<<endl;
m.clear();
m[a1]=1;
m[a2]=2;
cout<<(*m.begin()).second<<endl;
return 0;
}
/*
*/