std::lower_boundとstd::upper_boundの覚え方
以下、0-indexedで数列v[]=133557のどこを返すか。
lower_bound
lower_bound(3) => v[1]=3
lower_bound(4) => v[3]=5
x以上になる最初のidxを返す。
upper_bound
upper_bound(3) => v[3]=5
upper_bound(4) => v[3]=5
xより大きくなる最初のidxを返す。
要するに
[lower_bound(x),upper_bound(x)]で配列上でxとなる区間を抜き出せる。
vector.begin()は要素を指し、vector.end()は配列の終端+1を指す関係性に似ている。