C++中的upper_bound 和lower_bound比較容易弄混。記住的方法是根據名字記住其功能,如upper_bound表示以某個數爲上限,這個數應該放在哪個位置;lower_bound表示以某個數爲下限,這個數應該放在哪個位置。同時注意數組應該提前拍好序。
舉個例子:
#include<bits/stdc++.h>
using namespace std;
int main() {
int a[] = {1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4};
cout << (lower_bound(a, a + 12, 4) - a) << endl; //輸出 9
cout << (upper_bound(a, a + 12, 4) - a) << endl; //輸出 12
cout << (lower_bound(a, a + 12, 1) - a) << endl; //輸出 0
cout << (upper_bound(a, a + 12, 1) - a) << endl; //輸出 3
cout << (lower_bound(a, a + 12, 3) - a) << endl; //輸出 6
cout << (upper_bound(a, a + 12, 3) - a) << endl; //輸出 9
cout << (lower_bound(a, a + 12, 5) - a) << endl; //輸出 12
cout << (upper_bound(a, a + 12, 5) - a) << endl; //輸出 12
cout << (lower_bound(a, a + 12, 0) - a) << endl; //輸出 0
cout << (upper_bound(a, a + 12, 0) - a) << endl; //輸出 0
return 0;
}
————————————————
版權聲明:本文爲CSDN博主「錦夏挽秋」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq1337715208/article/details/81072709
以4爲下限(數組中的數滿足>=4),4應該放在位置9
以3爲上限(數組中的數滿足<=3),這個位置也要放在位置9