void LowerBound() {
    t("lower_bound");
    /* 
        lower_bound的主要作用是返回一个迭代器,指向第一个 *不小于* 给定值(称为value)的元素。
        如果所有元素都不大于value(即所有元素都小于或等于value),则返回指向范围末尾的迭代器。 
        语法:lower_bound(开始位置,结束位置的下一个位置,要查找的值);
            位置:数组元素位置用数组名+下标表示,向量数组vector用.begin()/.end()表示
    */
    int a[] = {1, 2, 2, 2, 3, 4, 5};  
    int n = 7;
    int value = 6;// 0-0; 2-1; 5-6; 6-7
  
    // 使用 lower_bound 查找第一个不小于 value 的元素  
    auto it = lower_bound(a, a+n, value);  
    cout << (it-a);
}

void UpperBound() {
    t("upper_bound");
    /* 
        upper_bound的主要作用是返回一个迭代器,指向第一个 *大于* 给定值(称为value)的元素。
        如果所有元素都不大于value(即所有元素都小于或等于value),则返回指向范围末尾的迭代器。 
        语法:upper_bound(开始位置,结束位置的下一个位置,要查找的值);
            位置:数组元素位置用数组名+下标表示,向量数组vector用.begin()/.end()表示
    */
  
    int a[] = {1, 2, 2, 2, 3, 4, 5};  
    int n = 7;
    int value = 2;// 0-0; 1-1;2-4;5-7;6-7
  
    // 使用 upper_bound 查找第一个大于 value 的元素  
    auto it = upper_bound(a, a+n, value);  
    cout << (it-a);
  
    vector<int> vec = {1, 2, 2, 2, 3, 4, 5};  
    value = 0;  // 0-0; 1-1;2-4;5-7;6-7
  
    // 使用 upper_bound 查找第一个大于 value 的元素  
    auto it2 = upper_bound(vec.begin(), vec.end(), value);  
    cout << (it2-vec.begin()) << endl;
  
}
 

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部