繁体   English   中英

C ++设置lower_bound()迭代器

[英]C++ set lower_bound() iterator

我想在C ++中的std :: set中找到最大的元素,严格小于给定的元素。 一些问题建议找到下限迭代器并将其递减,即

set<int> st;
// Add elements
int x;
// calculate x
auto it = st.lower_bound(x);
if(it != st.begin()) {
    it--;
}

关于Lower_bound返回哪种迭代器(例如Forward,Bidirectional)的文档尚不清楚,那么我们如何知道递减此迭代器是有效的? 我们还可以估计递减std :: set迭代器的复杂性吗?

根据cplusplus.com上set::lower_bound文档 ,在“返回值”下:

成员类型iteratorconst_iterator是指向元素的双向迭代器类型。

因此您始终可以减少迭代器(当然,在begin检查之后)。

递减迭代器的复杂度将始终保持不变。 看到这个答案

std :: set :: lower_bound的返回类型是std::set::iteratorstd::set::const_iterator ,它们是std::set 成员类型 ,它们都是常量双向迭代器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM