我有以下代码,这是完美的.
目标:给定一个数字n,找到n的下一个和前一个数字.
基于以下示例:如果n = 50,那么我将分别获得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
Run Code Online (Sandbox Code Playgroud)
参考http://www.cplusplus.com/reference/stl/set/lower_bound/,它说upper_bound"返回一个指向容器中第一个元素的迭代器,它不会比x小 ",但我确定它有其他东西指向比x小的东西.
提前致谢!:)
it = myset.lower_bound(50);
--it;
Run Code Online (Sandbox Code Playgroud)
当然,不要提领该迭代器,除非你肯定有是在集合的元素小于50.你可以检查it == myset.begin()一下.
| 归档时间: |
|
| 查看次数: |
1344 次 |
| 最近记录: |