C++ STLのalgorithmに入っているlower_boundとupper_boundが間違えやすいのでメモ。 vector<int> で定義されたコンテナ v の要素のうち、A以上、B以下の要素を求める場合。 vector<int>::iterator a = lower_bound(v.begin(), v.end(), A); vector<int>::iterator b = upper_bound(v.begin(), v.end(), B); if (a != v.end() && b != v.begin() && *a <= *(b - 1)) cout << "[" << *a << ", " << *(b - 1) << "]" << endl; else cout << "no element" << endl; *a が最小の要素、 *(b-1) が最大の要素になる。 A以上、B 未満 の場合。 vector<int>::iterator a = lower_bound(v.begin(), v.end(), A); vector<int>::iterator b = lower_bound (v.begin(), v.end(), B); if (a != v.end() && b != v.begin() && *a <= *(b - 1)) cout << "[" << *a << ", " << *(b - 1) << "]" << endl; else cout << "no element" << endl; 因みに、lower_boundとupper_boundに渡すコンテナはソートされている必要がある。...