我有以下完美运行的代码。
目标:给定一个数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
引用http://www.cplusplus.com/reference/stl/set/lower_bound/ ,它说 upper_bound “返回指向容器中第一个元素的迭代器,它不比较小于 x”但我确定还有其他东西指向 比较小于 x 的东西.
提前致谢! :)
最佳答案
it = myset.lower_bound(50);
--it;
当然,除非您确定集合中有一个小于 50 的元素,否则不要取消引用该迭代器。您可以检查 it == myset.begin()
是否为此。
关于c++ - 使用 STL 容器设置 upper_bound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10567256/