C++ 使用下限的结果作为上限的参数(反之亦然)

C++ 使用下限的结果作为上限的参数(反之亦然),c++,lower-bound,C++,Lower Bound,lower_bound返回排序向量中可以插入元素的最小位置,而不会丢失sorted order属性。上限,最大值。考虑到这一点,是否存在以下情况: auto lower = std::lower_bound(vec.begin(), vec.end(), x); auto upper = std::upper_bound(lower, vec.end(), y); // using lower, as opposed to vec.begin() for (auto it = lower; it

lower_bound返回排序向量中可以插入元素的最小位置,而不会丢失sorted order属性。上限,最大值。考虑到这一点,是否存在以下情况:

auto lower = std::lower_bound(vec.begin(), vec.end(), x);
auto upper = std::upper_bound(lower, vec.end(), y); // using lower, as opposed to vec.begin()
for (auto it = lower; it != upper; it++) { /* do work */ }
会不会表现得不如预期?也就是说,不会访问[x,y]范围内的每个元素,其中x
我想知道这种优化(尽管很小)是否切实可行。

tl;dr-是的,很好


对于原始问题(上下限都在搜索同一个键
x
),它已经内置为

特别注意该段

返回的范围由两个迭代器定义,一个指向不小于value的第一个元素,另一个指向大于value的第一个元素。第一个迭代器可以使用
std::lower_-bound()
,第二个-使用
std::upper-bound()
获得



对于编辑后的问题-
下限(x)…上限(y)
,带着
x的歉意,我对问题进行了一些编辑,这些编辑可能会(也可能不会)改变您的答案。不过,我现在将查看此文档。