Advertisement
Guest User

Untitled

a guest
Sep 3rd, 2015
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.59 KB | None | 0 0
  1. template<class _FwdIt,
  2.     class _Ty,
  3.     class _Diff> inline
  4.     _FwdIt _Lower_bound(_FwdIt _First, _FwdIt _Last, const _Ty& _Val, _Diff *)
  5.     {   // find first element not before _Val, using operator<
  6.     _Diff _Count = 0;
  7.     _Distance(_First, _Last, _Count);
  8.  
  9.     while (0 < _Count)
  10.         {   // divide and conquer, find half that contains answer
  11.         _Diff _Count2 = _Count / 2;
  12.         _FwdIt _Mid = _First;
  13.         _STD advance(_Mid, _Count2);
  14.  
  15.         if (*_Mid < _Val)
  16. //      if (_DEBUG_LT(*_Mid, _Val))
  17.             {   // try top half
  18.             _First = ++_Mid;
  19.             _Count -= _Count2 + 1;
  20.             }
  21.         else
  22.             _Count = _Count2;
  23.         }
  24.     return (_First);
  25.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement