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. 安装依赖jdk---linux

    1,下载JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2,使用XFTP ...

  2. Spring bean工厂配置头文件

    命名 beans.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...

  3. C# 数据操作系列 - 17 Dapper ——号称可以与ADO.NET 同台飙车的ORM

    0. 前言 之前四篇介绍了一个国内开发者开发的优秀框架SqlSugar,给我们眼前一亮的感觉.这一篇,我们将试试另一个出镜率比较高的ORM框架-Dapper. Dapper是一个轻量级的ORM框架,其 ...

  4. Javascript输入输出语句

    方法 说明 归属 alert(msg) 浏览器弹出警示框 浏览器 console.log(msg) 浏览器控制台打印输出信息 浏览器 prompt(info) 浏览器弹出输入框,用户可以输入 浏览器 ...

  5. 继承性与super的使用练习

    练习1: Account: package com.aff.sup; public class Account { private int id;// 账号 private double balanc ...

  6. .net remoting(一)

    一.远程对象 ①RemoteHello.csproj 类库项目,程序集名称 RemoteHello ,默认命名空间 Wrox.ProCSharp.Remoting: ②派生自System.Marssh ...

  7. Rocket - tilelink - TLArbiter

    https://mp.weixin.qq.com/s/0ob-Fq-ZOoj-_S7pTJu6rQ   介绍TLArbiter的实现,主要关注如何实现burst的多个beat的输出.   ​​   1 ...

  8. DOM、事件面试题

    1.DOM 事件级别有哪些? DOM0 a. 通过定义执行函数 element.onclick = function (){ } b. 直接在标签中添加执行语句 Onclick = '语句' 优点:很 ...

  9. JAVASE(十)面向对象:特性之多态性、Object类、代码块、关键字:static、final、父子类执行顺序

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.面向对象的特性之:多态性 多态性的理解:事物的多种形态 1.1 广义上多态性的体现:①方法的重写,重 ...

  10. (Java实现) 车厢重组

    [问题描述] 在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转.一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排 ...