代碼
C++ STL
iterator lower_bound( const key_type &key );
iterator upper_bound( const key_type &key );
函式作用
default (1) template <class ForwardIterator, class T> ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T& val)
指向[first , last)中第一個>=val的元素;
custom (2) template <class ForwardIterator, class T, class Compare> ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T& val, Compare comp);
指向[first , last)中第一個>=val的元素,自定義<比較符號;
default (1) template <class ForwardIterator, class T> ForwardIterator upper_bound (ForwardIterator first, ForwardIterator last, const T& val)
指向[first , last)中第一個>val的元素;
custom (2) template <class ForwardIterator, class T, class Compare> ForwardIterator upper_bound (ForwardIterator first, ForwardIterator last, const T& val, Compare comp);
指向[first , last)中第一個>val的元素,自定義<比較符號;
以上兩種bound,需要在[beging , end)中元素已經排序。其在可隨機訪問疊代器中,擁有很高的查找效率。
舉例
例如:map中已經插入了1,2,3,4的話,如果lower_bound(2)的話,返回的2,而upper_bound(2)的話,返回的就是3
equal_range函式返回一個pair,pair裡面第一個變數是lower_bound返回的疊代器,pair裡面第二個疊代器是upper_bound返回的疊代器,如果這兩個疊代器相等的話,則說明map中不出現這個關鍵字,程式說明