upper_boundとlower_bound

ソート済みのvector Aに対して

hoge以上の最小の要素のイテレータ

lower_bound(A.begin(), A.end(), hoge)

hogeを超える最小の要素のイテレータ

upper_bound(A.begin(), A.end(),hoge)
値がhoge以上の要素の個数
A.end() - lower_bound(A.begin(), A.end(), hoge)
値がhogeより大きい要素の個数
A.end() - upper_bound(A.begin(), A.end(), hoge)
値がhoge以下の要素の個数
upper_bound(A.begin(),A.end(),hoge)-A.begin()
値がhoge未満の要素の個数
lower_bound(A.begin(),A.end(),hoge)-A.begin()
値がhoge以上で最小の要素
*lower_bound(A.begin(), A.end(), hoge)
値がhogeより大きくて最小の要素
*upper_bound(A.begin(), A.end(), hoge)
値がhoge以下で最大の要素
*--upper_bound(A.begin(), A.end(), hoge)
値がhoge未満で最大の要素
*--lower_bound(A.begin(), A.end(), hoge)
値がhoge1以上でhoge2以下の要素の個数
upper_bound(A.begin(), A.end(), hoge2) -lower_bound(A.begin(), A.end(), hoge1)
値がhoge1より大きくてhoge2未満の要素の個数
lower_bound(A.begin(), A.end(), hoge2) - upper_bound(A.begin(), A.end(), hoge1)
値がhoge1以上でhoge2未満の要素の個数
lower_bound(A.begin(), A.end(), hoge2) - lower_bound(A.begin(), A.end(), hoge1)
値がhoge1より大きくてhoge2以下の要素の個数
upper_bound(A.begin(), A.end(), hoge2) - upper_bound(A.begin(), A.end(), hoge1)
値がhogeと等しい要素の個数
upper_bound(A.begin(), A.end(), hoge) -lower_bound(A.begin(), A.end(), hoge)