やったこと
下記メソッドを使ってみます。
- upper_bound
- lower_bound
確認環境
$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
調査
upper_bound
指定された要素より大きい値が現れる最初の位置のイテレータを取得する
lower_bound
指定された要素以上の値が現れる最初の位置のイテレータを取得する。
lower_upper.cpp
#include <bits/stdc++.h>
using namespace std;
int A[10] = {1, 3, 3, 5, 7};
int main() {
printf("%d\n", *upper_bound(A, A + 5, 3));
printf("%d\n", *lower_bound(A, A + 5, 3));
printf("%d\n", upper_bound(A, A + 5, 3));
printf("%d\n", lower_bound(A, A + 5, 3));
printf("%d\n", upper_bound(A, A + 5, 3) - lower_bound(A, A + 5, 3));
}
出力結果
5
3
117379276
117379268
2