c++ - 使用 STL 容器设置 upper_bound

标签 c++ stl set

我有以下完美运行的代码。

目标:给定一个数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/

相关文章:

c++ - 复制构造函数被隐式删除,因为默认定义的格式不正确

c++ - 确定不同字符的数量

java - 如何使用自定义 Comparator 或 equals 方法查找 Set 差异?

delphi - Delphi Prism 中 CharInSet 函数的替换

c++ - 整数的快速集合并集

c++ - 我可以在此设计中使用 dynamic_cast 以外的东西吗?

c++ - OpenCV中是否有任何函数可以找到两个cv::Rect的交集、并集和补集

c++ - 存储 float 的最佳方式

c++ - 格式化读取文件数据C++

c++ - 递归函数中的段错误。使用 std::stack (C++)