lower_boundやupper_boundを使用してイテレーターを取得する際に、取得した値をそのまま使用することができないことに注意する。
distanceを使用して、整数型にすると扱いやすい。
vector<int> data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto itr = lower_bound(data.begin(), data.end(), 5); // 5以上 戻り値はイテレーター
int d = distance(data.begin(), itr); // 要素5の場所を示す4を返す
itr = upper_bound(data.begin(), data.end(), 5); // 5より大きい
d = distance(data.begin(), itr); // 要素6の場所を示す5を返す