cb34a_c++_STL_算法_查找算法_(7)_lower_bound
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的更多相关文章
- cb33a_c++_STL_算法_查找算法_(6)binary_search_includes
cb33a_c++_STL_算法_查找算法_(6)binary_search_includes//针对已序区间的查找算法,如set,multiset关联容器-自动排序binary_search(b,e ...
- 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 ...
- 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 ...
- cb30a_c++_STL_算法_查找算法_(3)search_find_end
cb30a_c++_STL_算法_查找算法_(3)search_find_endsearch()pos = search(ideq.begin(), ideq.end(), ilist.begin() ...
- 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 ...
- cb28a_c++_STL_算法_查找算法_(1)find_find_if
cb28a_c++_STL_算法_查找算法_(1)find_find_iffind() //线性查找,比较慢.pos1 = find(ilist.begin(), ilist.end(), 5);fi ...
- STL_算法_查找算法(lower_bound、upper_bound、equal_range)
C++ Primer 学习中. .. 简单记录下我的学习过程 (代码为主) //全部容器适用(O(log(n))) 已序区间查找算法 lower_bound() //找第一个符合的 ...
- STL_算法_查找算法(find、find_if)
C++ Primer 学习中. .. 简单记录下我的学习过程 (代码为主) find . find_if /**********************线性查找O(n) find(); find_if ...
- STL_算法_查找算法(binary_search、includes)
C++ Primer 学习中.. . 简单记录下我的学习过程 (代码为主) 全部容器适用(O(log(n))) 已序区间查找算法 binary_search //二分查 ...
随机推荐
- 【Leetcode】560. 和为K的子数组&974. 和可被 K 整除的子数组(前缀和+哈希表)
public class Solution { public int subarraySum(int[] nums, int k) { int count = 0, pre = 0; HashMap ...
- 【java】关键字volatile
volatile 1. 含义: volatile是JVM提供的轻量级的同步机制,具有三个特点:保证可见性.不保证原子性.禁止指令重排. 1.1 保证可见性 一个线程修改了共享变量并写回主内存,其他线程 ...
- JVM系列.JDK演进历史
Java程序员为什么要了解虚拟机相关的知识 Java程序在设计之初就号称"一次编译,到处运行".Java之所以能做到"一次编译,处处运行"是因为Java虚拟机隐 ...
- & 异步使用场景
异步的使用场景: 1.不涉及共享资源,或对共享资源只读,即非互斥操作 2.没有时序上的严格关系 3.不需要原子操作,或可以通过其他方式控制原子性 4.常用于IO操作等耗时操作,因为比较影响客户体验和使 ...
- 从 React 架构开始讲解 useState、useEffect 编程设计
随着前端开发复杂度增加,原生开发模式显得越来越笨重,前端框架也层出不穷. MVC 和 MVVM MVC MVC是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计 ...
- Rocket - debug - TLDebugModuleInner - COMMAND
https://mp.weixin.qq.com/s/Lz_D43YdhbRhiGiyoCBxDg 简单介绍TLDebugModuleInner中COMMAND寄存器的实现. 1. COMMANDRe ...
- Java实现 LeetCode 799 香槟塔 (暴力模拟)
799. 香槟塔 我们把玻璃杯摆成金字塔的形状,其中第一层有1个玻璃杯,第二层有2个,依次类推到第100层,每个玻璃杯(250ml)将盛有香槟. 从顶层的第一个玻璃杯开始倾倒一些香槟,当顶层的杯子满了 ...
- Java实现蓝桥杯模拟组织晚会
问题描述 小明要组织一台晚会,总共准备了 n 个节目.然后晚会的时间有限,他只能最终选择其中的 m 个节目. 这 n 个节目是按照小明设想的顺序给定的,顺序不能改变. 小明发现,观众对于晚上的喜欢程度 ...
- Java实现 蓝桥杯VIP 算法提高 班级排名
算法提高 班级排名 时间限制:1.0s 内存限制:256.0MB 问题描述 达达在陶陶的影响下,也对学习慢慢的产生了兴趣. 他在每次考试之后,都会追着老师问,自己在班级的总名次是多少.考试一多,老师也 ...
- java代码(7) ---guava之Bimap
guava之Bimap bimap的作用很清晰:它是一个——映射,可以通过key得到value,也可以通过value得到key 一.概述 1.bimap和普通HashMap区别 (1)在java集合类 ...