// <set>
iterator lower_bound (const value_type& val);
const_iterator lower_bound (const value_type& val) const;

set 类模板中的公共成员函数。 返回指向容器中第一个值等于给定搜索值或在给定搜索值之后的元素的迭代器,即第一个等于或大于给定搜索值元素的迭代器。

  • val

    需要被搜索的值。

    成员类型 value_type 是存储在当前容器中的元素的类型,作为 set 实例化时第一个模板参数(T)的别名而存在。

    返回

    指向容器中第一个等于给定搜索值或在给定搜索值之后的元素的迭代器。

    如果 set 对象是 const 限定的,函数返回类型为 const_iterator,否则返回 iterator

    成员类型 iterator 及 const_iterator 是指向容器中元素的双向迭代器的类型。

  • #include <set>
    #include <iostream>
    
    namespace ClassFoo{
    void SetLowerBoundExample1() {
        using namespace std;
        set<int> foo1;
        set<int>::iterator it;
        foo1.insert(1);
        foo1.insert(3);
        foo1.insert(6);
        foo1.insert(9);
        foo1.insert(12);
        it = foo1.lower_bound(6);
        cout << "foo1.lower_bound(6):"
            << *it << endl;
    }
    }
    int main( )
    {
        ClassFoo::SetLowerBoundExample1();
        return 0;
    }

    输出:

    foo1.lower_bound(6):6​

  • 复杂度

    时间复杂度为 O(logn)n 为容器的大小

    迭代器有效性

    保持不变。

    数据争用相关

    容器被访问(不管是 const 限制或 非 const 限制都不会修改容器)。

    元素被访问,并发地访问元素是安全的。

    异常安全性相关

    强异常安全性保证:发生异常时,容器无任何改变。