cb34a_c++_STL_算法_查找算法_(7)_lower_bound
//针对已序区间的查找算法,如set,multiset关联容器-自动排序
lower_bound()--第一个可能的位置
upper_bound()--查找最后一个可能的位置
equal_range()--同时查找第一个和最后一个可能的位置.做了两件事,先做lower_bound(),再upper_bound()

pair<list<int>::iterator, list<int>::iterator> range;//pair(一对迭代器)
range = equal_range(ilist.begin(), ilist.end(), 5);
cout << distance(ilist.begin(),range.first) << endl;
cout << distance(ilist.begin(),range.second) << endl;

关联式容器有等效的成员函数。性能更佳
multiset<int>::iterator iter1a,iter2a,iter3a;
iter1a=iset.lower_bound(5);
cout << "5的索引位置1a:" << distance(iset.begin(), iter1a) << endl;
iter2a=iset.upper_bound(5);
cout << "最后一个5的下一个索引位置2a:" << distance(iset.begin(), iter2a) << endl;

pair<multiset<int>::iterator, multiset<int>::iterator> range2;
range2 = iset.equal_range(5);
cout << "lower索引:"<<distance(iset.begin(),range2.first) << endl;
cout << "upper索引:"<<distance(iset.begin(),range2.second) << endl;

distance(ilist.begin(), pos2) + 1, 用于计算数据的位置。pos2是迭代器,*pos2可以输入所指向的值
ilist.sort();//排序

 /*cb34a_c++_STL_算法_查找算法_(7)_lower_bound
//针对已序区间的查找算法,如set,multiset关联容器-自动排序
lower_bound()--第一个可能的位置
upper_bound()--查找最后一个可能的位置
equal_range()--同时查找第一个和最后一个可能的位置.做了两件事,先做lower_bound(),再upper_bound() pair<list<int>::iterator, list<int>::iterator> range;//pair(一对迭代器)
range = equal_range(ilist.begin(), ilist.end(), 5);
cout << distance(ilist.begin(),range.first) << endl;
cout << distance(ilist.begin(),range.second) << endl; 关联式容器有等效的成员函数。性能更佳
multiset<int>::iterator iter1a,iter2a,iter3a;
iter1a=iset.lower_bound(5);
cout << "5的索引位置1a:" << distance(iset.begin(), iter1a) << endl;
iter2a=iset.upper_bound(5);
cout << "最后一个5的下一个索引位置2a:" << distance(iset.begin(), iter2a) << endl; pair<multiset<int>::iterator, multiset<int>::iterator> range2;
range2 = iset.equal_range(5);
cout << "lower索引:"<<distance(iset.begin(),range2.first) << endl;
cout << "upper索引:"<<distance(iset.begin(),range2.second) << endl; distance(ilist.begin(), pos2) + 1, 用于计算数据的位置。pos2是迭代器,*pos2可以输入所指向的值
ilist.sort();//排序
*/ #include <iostream>
#include <algorithm>
#include <list>
#include <set> using namespace std; int main()
{
list<int> ilist;
for (int i = ; i <= ; ++i)
ilist.insert(ilist.end(), i);
for (int i = ; i <= ; ++i)
ilist.insert(ilist.end(), i);
ilist.push_back();
ilist.push_back();
ilist.push_back();
ilist.sort(); for (list<int>::iterator iter = ilist.begin(); iter != ilist.end(); ++iter)
cout << *iter << ' ';
cout << endl;
list<int>::iterator pos1,pos2;
pos1 = lower_bound(ilist.begin(), ilist.end(), );
cout << "第一个5的位置: " << distance(ilist.begin(), pos1) + << endl; pos2 = upper_bound(ilist.begin(), ilist.end(), );//大于5的下一个位置。upper:大于。
cout << "找到最后一个5的下一个位置:" << distance(ilist.begin(), pos2) + << endl;//加1就是从1开始数,第几个位置。用索引表示就0开始咯
cout <<"指向的值是:"<< *pos2 << endl; cout << "插入数据" << endl; ilist.insert(pos1, );//迭代器pos1前面插入3
for (list<int>::iterator iter = ilist.begin(); iter != ilist.end(); ++iter)
cout << *iter << ' ';
cout << endl; ilist.insert(pos2, );//迭代器pos2前面插入8 for (list<int>::iterator iter = ilist.begin(); iter != ilist.end(); ++iter)
cout << *iter << ' ';
cout << endl;
ilist.sort();
for (list<int>::iterator iter = ilist.begin(); iter != ilist.end(); ++iter)
cout << *iter << ' ';
cout << endl; pair<list<int>::iterator, list<int>::iterator> range;
range = equal_range(ilist.begin(), ilist.end(), );
cout << distance(ilist.begin(),range.first) << endl;
cout << distance(ilist.begin(),range.second) << endl; cout << "关联式容器有等效的成员函数。性能更佳,示范如下:" << endl;
multiset<int> iset; for (int jj = ; jj <= ; ++jj)
iset.insert(jj);
for (int jj = ; jj <= ; ++jj)
iset.insert(jj);
for (multiset<int>::iterator iter = iset.begin(); iter != iset.end(); ++iter)
cout << *iter << ' ';
cout << endl;
multiset<int>::iterator iter1a,iter2a,iter3a;
iter1a=iset.lower_bound();
cout << "5的索引位置1a:" << distance(iset.begin(), iter1a) << endl;
iter2a=iset.upper_bound();
cout << "最后一个5的下一个索引位置2a:" << distance(iset.begin(), iter2a) << endl; pair<multiset<int>::iterator, multiset<int>::iterator> range2;
range2 = iset.equal_range();
cout << "lower索引:"<<distance(iset.begin(),range2.first) << endl;
cout << "upper索引:"<<distance(iset.begin(),range2.second) << endl; return ;
}

cb34a_c++_STL_算法_查找算法_(7)_lower_bound的更多相关文章

  1. cb33a_c++_STL_算法_查找算法_(6)binary_search_includes

    cb33a_c++_STL_算法_查找算法_(6)binary_search_includes//针对已序区间的查找算法,如set,multiset关联容器-自动排序binary_search(b,e ...

  2. cb32a_c++_STL_算法_查找算法_(5)adjacent_find

    cb32a_c++_STL_算法_查找算法_(5)adjacent_findadjacent_find(b,e),b,begin(),e,end()adjacent_find(b,e,p),p-par ...

  3. cb31a_c++_STL_算法_查找算法_(4)find_first_of

    cb31a_c++_STL_算法_查找算法_(4)find_first_offind_first_of(b,e,sb,se),sb,second begin, se,second end();find ...

  4. cb30a_c++_STL_算法_查找算法_(3)search_find_end

    cb30a_c++_STL_算法_查找算法_(3)search_find_endsearch()pos = search(ideq.begin(), ideq.end(), ilist.begin() ...

  5. cb29a_c++_STL_算法_查找算法_(2)search_n

    cb29a_c++_STL_算法_查找算法_(2)search_n//比如:连续查找连续的n个8search_n(b,e,c,v),迭代器b,begin(),e,end().连续的c个vpos=sea ...

  6. cb28a_c++_STL_算法_查找算法_(1)find_find_if

    cb28a_c++_STL_算法_查找算法_(1)find_find_iffind() //线性查找,比较慢.pos1 = find(ilist.begin(), ilist.end(), 5);fi ...

  7. STL_算法_查找算法(lower_bound、upper_bound、equal_range)

    C++ Primer 学习中. .. 简单记录下我的学习过程 (代码为主) //全部容器适用(O(log(n)))    已序区间查找算法 lower_bound()        //找第一个符合的 ...

  8. STL_算法_查找算法(find、find_if)

    C++ Primer 学习中. .. 简单记录下我的学习过程 (代码为主) find . find_if /**********************线性查找O(n) find(); find_if ...

  9. STL_算法_查找算法(binary_search、includes)

    C++ Primer 学习中.. . 简单记录下我的学习过程 (代码为主) 全部容器适用(O(log(n)))     已序区间查找算法 binary_search             //二分查 ...

随机推荐

  1. thinkphp5.0 cache缓存机制

    首先引用缓存文件 use think\Cache; public function index(){ $data = Cache::get('showw');//去缓存 if($data){ echo ...

  2. 【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?

    写在前面 先说点题外话:不少读者工作几年后,仍然在使用Java7之前版本的方法,对于Java8版本的新特性,甚至是Java7的新特性几乎没有接触过.真心想对这些读者说:你真的需要了解下Java8甚至以 ...

  3. ubuntu 安装 swftoos

    一:下载依赖: freetype下载地址 : http://ftp.twaren.net/Unix/NonGNU/freetype/ jpegsrc:下载地址 http://www.ijg.org/f ...

  4. CF1353D Constructing the Array(优先队列)

    Question 给你一个长度为n的全为0的序列,让你从1-n填数,填的位置为找出最长的0序列,如序列长度为奇数,则为(l+r)/2,为偶数,则为(l+r-1)/2 Solution 运用优先队列,将 ...

  5. python常见面试题讲解(八)提取不重复的整数

    题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺序,返回一个不含重复数字的新的整数 示例1 ...

  6. Matlab矩阵学习三 矩阵的运算

    Matlab矩阵的运算 一.矩阵的加减 在matlab中,矩阵的加减和数的加减符号一样,都是"+"和”-“,不同的是两个进行运算的矩阵维度必须相同  二.数乘  三.乘法 矩阵乘法 ...

  7. Java实现 LeetCode 689 三个无重叠子数组的最大和(换方向筛选)

    689. 三个无重叠子数组的最大和 给定数组 nums 由正整数组成,找到三个互不重叠的子数组的最大和. 每个子数组的长度为k,我们要使这3*k个项的和最大化. 返回每个区间起始索引的列表(索引从 0 ...

  8. Java实现 蓝桥杯VIP基础练习 矩形面积交

    描述 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴.对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积. 输入 输入仅包含两行,每行描述一个矩形. 在每行中,给出矩 ...

  9. Java实现第八届蓝桥杯字母组串

    字母组串 由 A,B,C 这3个字母就可以组成许多串. 比如:"A","AB","ABC","ABA","AA ...

  10. Linux 文件系统属性chattr权限

    chattr命令 格式:chattr [+-=] [选项] 文件或目录名,其中,+表示增加权限,-表示删除权限,=表示等于某权限(对超级用户root也有用),比如:chattr +i /project ...