lower bound 函式用法

2021-06-21 21:37:32 字數 1128 閱讀 4157

函式lower_bound()在first和last中的前閉後開區間進行二分查詢,返回大於或等於val的第乙個元素位置。如果所有元素都小於val,則返回last的位置

舉例如下:

乙個陣列number序列為:4,10,11,30,69,70,96,100.設要插入數字3,9,111.pos為要插入的位置的下標

則pos = lower_bound( number, number + 8, 3) - number,pos = 0.即number陣列的下標為0的位置。

pos = lower_bound( number, number + 8, 9) - number, pos = 1,即number陣列的下標為1的位置(即10所在的位置)。

pos = lower_bound( number, number + 8, 111) - number, pos = 8,即number陣列的下標為8的位置(但下標上限為7,所以返回最後乙個元素的下乙個元素)。

所以,要記住:函式lower_bound()在first和last中的前閉後開區間進行二分查詢,返回大於或等於val的第乙個元素位置。如果所有元素都小於val,則返回last的位置,且last的位置是越界的!!~

返回查詢元素的第乙個可安插位置,也就是「元素值》=查詢值」的第乙個元素的位置

測試**如下:

#include #include #include #include using namespace std;

int main()

\n" << endl ;

// return the first location at which 10 can be inserted

// in numbers

location = lower_bound(start, end, 1) ;

cout << "first location element 10 can be inserted in numbers is: "

<< location - start<< endl ;

}

sort函式和lower bound函式

大理石在哪?劉汝佳 演算法競賽入門經典 p108 題目 現有n個大理石,每個大理石上寫了乙個非負整數。首先把個個數從小到大排序,然後回答q個問題。每個問題問是否有乙個大理石上寫著某個整數x,如果是還要回答那個大理石上寫著x。排序後的大理石從左到右編號為1 n。樣例輸入 4 1 2 3 5 1 5 2...

lower bound 函式使用詳解

lower bound 函式是用來求乙個容器中,第乙個大於等於所要查詢的元素的位址,具體的原理是二分查詢,因此它只能用於非降序序列。他有三個引數,第乙個引數是容器的初始位址,第二個引數是容器的末尾位置,第三個引數是所要查詢的元素值。返回值是第乙個大於等於所要查詢的元素的位址。vectorv v.pu...

關於C STL中的lower bound用法

int t lower bound a l,a r,m a 在公升序排列的a陣列內二分查詢 l,r 區間內的值為m的元素。返回m在陣列中的下標。1.如果m在區間中沒有出現過,那麼返回第乙個比m大的數的下標。2.如果m比所有區間內的數都大,那麼返回r。這個時候會越界,小心。3.如果區間內有多個相同的m...