(備忘+技術的な話題)/2.なブログ

まとめといたほうがよさそうだと感じたトピックについて記事を書きます。

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を指す関係性に似ている。