返回列表 發帖

lower_bound & upper_bound 練習

set
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. set<int> s;
  4. //set<int> s={9,7,5,12,2};
  5. int main()
  6. {
  7.     s.insert(9);
  8.     s.insert(2);
  9.     s.insert(5);
  10.     s.insert(2);
  11.     s.insert(12);
  12.     s.insert(7);
  13.     cout<<s.size()<<endl;
  14.     cout<<"-----"<<endl;
  15.     for(int i: s)
  16.         cout<<i<<endl;
  17.     cout<<"-----"<<endl;
  18.     for(auto it=s.begin(); it!=s.end(); it++)
  19.         cout<<*it<<endl;
  20.     cout<<"-----"<<endl;
  21.     auto it=s.upper_bound(8);
  22.     //cout<<it-s.begin()<<endl;   //行不通
  23.     cout<<*it<<endl;
  24.     cout<<*--it<<endl;
  25.     cout<<"-----"<<endl;
  26.     it=s.upper_bound(13);
  27.     if(it==s.end())
  28.         cout<<"no find"<<endl;
  29.     else
  30.         cout<<*it<<endl;
  31.     it=--s.lower_bound(2);
  32.     if(it==s.end())
  33.         cout<<"no find"<<endl;
  34.     else
  35.         cout<<*it<<endl;
  36.     return 0;
  37. }
  38. //  2 5 7 9 12
複製代碼
map
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. map<int, string> mp;
  4. //map<int, string> mp={{3, "t"},{1, "o"}};
  5. int main()
  6. {
  7.     mp[9]="n";
  8.     mp[5]="f";
  9.     mp[12]="t";
  10.     mp[7]="s";
  11.     mp[2]="t";
  12.     //mp.insert(mp.begin(), {3, "t"});
  13.     cout<<mp.size()<<endl;
  14.     for(pair<int, string> p: mp)
  15.         cout<<p.first<<": "<<p.second<<endl;
  16.     cout<<"-------"<<endl;
  17.     for(auto it=mp.begin(); it!=mp.end(); it++)
  18.         cout<<(*it).first<<": "<<(*it).second<<endl;
  19.     cout<<"-------"<<endl;
  20.     auto it=mp.upper_bound(8);
  21.     cout<<(*it).first<<": "<<(*it).second<<endl;
  22.     it=--mp.upper_bound(8);
  23.     cout<<(*it).first<<": "<<(*it).second<<endl;
  24.     cout<<"-------"<<endl;
  25.     it=mp.upper_bound(12);
  26.     if(it==mp.end())
  27.         cout<<"no find"<<endl;
  28.     else
  29.         cout<<(*it).first<<": "<<(*it).second<<endl;
  30.     it=--mp.lower_bound(2);
  31.     if(it==mp.end())
  32.         cout<<"no find"<<endl;
  33.     else
  34.         cout<<(*it).first<<": "<<(*it).second<<endl;
  35.     return 0;
  36. }
  37. //  2 5 7 9 12
複製代碼

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. set<int> s;
  4. int main()
  5. {
  6.     s.insert(9);
  7.     s.insert(2);
  8.     s.insert(5);
  9.     s.insert(2);
  10.     s.insert(12);
  11.     s.insert(7);
  12.     cout<<s.size()<<endl;
  13.     cout<<"-----"<<endl;
  14.     for(int i:s)
  15.         cout<<i<<endl;
  16.     cout<<"-----"<<endl;
  17.     for(auto it=s.begin();it!=s.end();it++)
  18.         cout<<*it<<endl;
  19.     cout<<"-----"<<endl;
  20.     auto it=s.upper_bound(8);
  21.     cout<<*it<<endl;
  22.     cout<<*--it<<endl;
  23.     cout<<"-----"<<endl;
  24.     it=s.upper_bound(13);
  25.     if(it==s.end())
  26.         cout<<"no find"<<endl;
  27.     else
  28.         cout<<*it<<endl;
  29.     it=--s.lower_bound(2);
  30.     if(it==s.end())
  31.         cout<<"no find"<<endl;
  32.     else
  33.         cout<<*it<<endl;
  34.     return 0;
  35. }
複製代碼

TOP

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4.     set<int> s;
  5.     s.insert(9);
  6.     s.insert(2);
  7.     s.insert(5);
  8.     s.insert(2);
  9.     s.insert(12);
  10.     s.insert(7);
  11.     for(int i:s)
  12.         cout<<i<<endl;
  13.     cout<<"-----"<<endl;
  14.     for(auto it=s.begin();it!=s.end();it++){
  15.         cout<<*it<<endl;
  16.     }
  17.     cout<<"-----"<<endl;
  18.     auto it=s.upper_bound(8);
  19.     //cout<<it-s.begin()<<endl;  無法
  20.     cout<<*it<<endl;//7
  21.     cout<<*--it<<endl;//9
  22.     cout<<"-----"<<endl<<"it=s.upper_bound(13);"<<endl;
  23.     it=s.upper_bound(13);
  24.     if(it==s.end())cout<<"no find"<<endl;
  25.     else{
  26.         cout<<*it<<endl;
  27.         }
  28.     it=--s.lower_bound(2);
  29.     if(it==s.end())cout<<"no find"<<endl;
  30.     else{
  31.         cout<<*it<<endl;
  32.     }
  33.     return 0;
  34. }
複製代碼

TOP

返回列表