私は完璧に動作する次のコードを持っています。
目的: 数 n が与えられたとき、n の前後の数を見つけます。
以下の例に基づいて: n = 50 の場合、i は 60 と 40 を別々に取得します。
upper_bound を使用して 60 を取得できます。しかし、どうすれば50より前の数値を取得できますか?それを行うために提供されたアルゴリズムが見つからないようです。
set<int> myset;
set<int>::iterator it,itlow,itup;
for (int i=1; i<10; i++) myset.insert(i*10); // 10 20 30 40 50 60 70 80 90
itup=myset.upper_bound (50); //
cout << "upper_bound at position " << (*itup) << endl;
//output: 60
http://www.cplusplus.com/reference/stl/set/lower_bound/を参照すると、 upper_bound 「コンテナ内の最初の要素を指すイテレータを返します。これは x 未満とは比較されません」と書かれていますが、あると確信していますx より小さいものを指す何か他のもの。
前もって感謝します!:)