template_Firstは、検索対象の最初の要素を指定します。ForwardIterator upper_bound( ForwardIterator _First, ForwardIterator _Last, const Type& _Val );
_Lastは、検索対象の最後の次の要素を指定します。
_Valには、値を指定します。
検索対象の要素は昇順または降順で並んでいなくてはなりません。
では、サンプルのプログラムを見てみましょう。
// upperbound01.cpp #include <vector> #include <algorithm> #include <iostream> using namespace std; int main() { vector <int> v1, v2, v3; vector <int>::iterator pv; int i; for (i = 0; i < 10; i++) v1.push_back(i); for (pv = v1.begin(); pv != v1.end(); pv++) cout << *pv << ","; cout << endl; pv = upper_bound(v1.begin(), v1.end(), 4); cout << "4よりおおきい最初の要素は" << *pv << endl; for (i = 10; i < 0; i--) v2.push_back(i); for (pv = v2.begin(); pv != v2.end(); pv++) cout << *pv << ","; cout << endl; pv = upper_bound(v2.begin(), v2.end(), 4); cout << "4より大きい最初の要素は" << *pv << endl; return 0; }実行結果はどうなるかというと
特に難しくはないですね。
Update Feb/23/2009 By Y.Kumei