pair用法 lower_bound upper_bound

int a,b;
    pair<int,int>p;
    cin>>a>>b;
    p=make_pair(a,b);
    cout<<p.first<<" "<<p.second<<endl;
    /*输入:3 5
    输出:3 5*/
int main()
{
   set<pair<int,int> >st;
   set<pair<int,int> >::iterator it;
   st.insert(pair<int,int>(3,5));
   st.insert(pair<int,int>(3,4));
   st.insert(pair<int,int>(4,3));
   for(it=st.begin();it!=st.end();it++)
   {
       cout<<(*it).first<<" "<<(*it).second<<endl;
   }
}
/*输出:3 4
      3 5
      4 3
*/
//set对pair排序时先按第一个由小到大排,第一个相同,才按第二个由小到大

lower_bound(),upper_bound();

两个函数的用法类似,在一个左闭右开有序区间里进行二分查找。

注意是有序区间,左闭右开

 对于upper_bound来说,返回的是被查序列中第一个大于查找值的指针,lower_bound则是返回的是被查序列中第一个大于等于查找值的指针。

int main()
{
   vector<int>v;
   for(int i=1;i<=4;i++)
    v.push_back(2*i);//2 4 6 8
   vector<int>::iterator it;
   it=lower_bound(v.begin(),v.end(),3);//返回的是指针
   cout<<*it<<endl;//4输出大于等于三的值
}
int main()
{
    set<int>st;
    set<int>::iterator it;
    for(int i=1;i<=4;i++)
        st.insert(2*i);
    it=st.lower_bound(3);就是在整个区间找
    cout<<*it<<endl;//4
}
int main()
{
    vector<int> v;
    for (int i = 1; i < 4; i++)
        v.push_back(2 * i);//注意此时v中的元素本身就是有序的
    int pos=lower_bound(v.begin(),v.end(),3)-v.begin();//返回的是大于等于3的元素的位置
    cout <<pos<< endl;//1
    return 0;
}
int main()
{
    int a[4] = { 2, 4, 6, 8 }; //注意此时a中的元素本身就是有序的
    int *it = lower_bound(a,a+4,3); //前两个表示区间。返回的是此区间大于等于三的值
    cout<<*it<< endl;//4
}
int main()
{
    int a[4] = { 2, 4, 6, 8 }; //注意此时a中的元素本身就是有序的
    int pos = lower_bound(a, a + 4, 3) - a;//返回大于等于3的数的位置
    cout <<pos<< endl;//1
    return 0;
}

3.vector<int>G[x];

表示建立了一个vector的数组,每一个G[i]都是一个vector

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值