std:: lower_bound std:: upper_bound

std:: lower_bound

该函数返回范围内第一个不小于(大于或等于)指定val的值。如果序列中的值都小于val,则返回last.序列应该已经有序!

eg:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(int argv,char **argc)
{
  vector<int> v1{1,2,3,4};
  cout<<"v1=";
  for(int i:v1)
    cout<<i<<" ";
  cout<<endl;
  auto it=lower_bound(v1.begin(),v1.end(),3);
  cout<<"lower_bound(v1.begin(),v1.end(),3)="<<*it<<endl;
  auto it2=lower_bound(v1.begin(),v1.end(),5);
  if(it2==v1.end())
    cout<<"lower_bound(v1.begin(),v1.end(),5)=v1.end()"<<endl;
  else
    cout<<"lower_bound(v1.begin(),v1.end(),5)="<<*it2<<endl;

}

截图:

std:: upper_bound

 

该函数返回范围内第一个 大于 指定val的值。如果序列中的值都小于val,则返回last.序列应该已经有序!

eg:

#include <iostream>     // std::cout
#include <algorithm>    // std::lower_bound, std::upper_bound, std::sort
#include <vector>       // std::vector

int main () {
  int myints[] = {10,20,30,30,20,10,10,20};
  std::vector<int> v(myints,myints+8);           // 10 20 30 30 20 10 10 20

  std::sort (v.begin(), v.end());                // 10 10 10 20 20 20 30 30

  std::vector<int>::iterator low,up;
  low=std::lower_bound (v.begin(), v.end(), 20); //          ^
  up= std::upper_bound (v.begin(), v.end(), 20); //                   ^

  std::cout << "lower_bound at position " << (low- v.begin()) << '\n';
  std::cout << "upper_bound at position " << (up - v.begin()) << '\n';

  return 0;
}

截图:

 

另外,在map里的使用方法:

// map::lower_bound/upper_bound
#include <iostream>
#include <map>

int main ()
{
  std::map<char,int> mymap;
  std::map<char,int>::iterator itlow,itup;

  mymap['a']=20;
  mymap['b']=40;
  mymap['c']=60;
  mymap['d']=80;
  mymap['e']=100;

  itlow=mymap.lower_bound ('b');  // itlow points to b
  itup=mymap.upper_bound ('d');   // itup points to e (not d!)

  mymap.erase(itlow,itup);        // erases [itlow,itup)

  // print content:
  for (std::map<char,int>::iterator it=mymap.begin(); it!=mymap.end(); ++it)
    std::cout << it->first << " => " << it->second << '\n';

  return 0;
}

结果:

a => 20
e => 100

 

posted @ 2016-03-22 16:11  jiu~  阅读(682)  评论(0编辑  收藏  举报