c++学习——容器搜索方法(lower_bound, uper_bound)
来源:互联网 发布:数据采集员怎么样 编辑:程序博客网 时间:2024/05/20 03:45
本文主要是验证,容器搜索算法的使用:lower_bound, uper_bound
验证项目:
1. 当 key > begin 时 lower_bound, uper_bound 取值
2. 当 key < end 时 lower_bound, uper_boudn 取值
3. 当 key = 容器中的某值(不等于bigin,也不等于end) 时 lower_bound, uper_boudn 取值
4. 当 key 在 不等于容器中任何一Key, 但是在key 的返回 ower_bound, uper_boudn 取值
5. 当 key 等于 bigin, 当 key 等于 end 时 的取值
测试代码:
#include "stdafx.h"#include <map>#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){//lower_bound函数用法,这个函数用来返回要查找关键字的下界//upper_bound函数用法,这个函数用来返回要查找关键字的上界map<int,string>mp;mp[3]="3";mp[4]="4";mp[7]="7";mp[8]="8";map<int,string>::iterator iterLowerBound5,iterUperBound5;map<int,string>::iterator iterLowerBound7,iterUperBound7;map<int,string>::iterator iterLowerBound3,iterUperBound3;map<int,string>::iterator iterLowerBound8,iterUperBound8;map<int,string>::iterator iterLowerBound10,iterUperBound10;map<int,string>::iterator iterLowerBound1,iterUperBound1;iterLowerBound5 = mp.lower_bound(5);iterUperBound5 = mp.upper_bound(5);iterLowerBound7 = mp.lower_bound(7);iterUperBound7 = mp.upper_bound(7);iterLowerBound3 = mp.lower_bound(0);iterUperBound3 = mp.upper_bound(0);iterLowerBound8 = mp.lower_bound(8);iterUperBound8 = mp.upper_bound(8); iterLowerBound10 = mp.lower_bound(10);iterUperBound10 = mp.upper_bound(10);if(iterLowerBound10 == mp.end()) cout << "iterUperBound10 = end" << endl;if(iterUperBound10 == mp.end())cout << "iterUperBound10 = end" << endl;iterLowerBound1 = mp.lower_bound(1);iterUperBound1 = mp.upper_bound(1);if(iterLowerBound1 == mp.end())cout << "iterUperBound1 = end" << endl;if(iterUperBound1 == mp.end())cout << "iterUperBound1 = end" << endl;if(iterLowerBound1 == mp.begin())cout << "iterUperBound1 = begin" << endl;if(iterUperBound1 == mp.begin())cout << "iterUperBound1 = begin" << endl;//iter2 = mp.upper_bound(5);string Str = iterLowerBound5->second; cout<<"lower_bound(5) = " <<Str.c_str()<<endl;Str = iterUperBound5->second;cout<<"upper_bound(5) = " <<Str.c_str()<<endl;Str = iterLowerBound7->second;cout<<"lower_bound(7) = " << Str.c_str()<<endl;Str = iterUperBound7->second;cout<<"upper_bound(7) = " << Str.c_str()<<endl;Str = iterLowerBound3->second;cout<<"lower_bound(0) = " << Str.c_str()<<endl;Str = iterUperBound3->second;cout<<"upper_bound(0) = " << Str.c_str()<<endl;Str = iterLowerBound8->second;cout<<"lower_bound(8) = " << Str.c_str()<<endl;//Str = iterUperBound8->second;if(iterUperBound8 == mp.end()) cout<<"upper_bound(8) == end" << Str.c_str()<<endl; while(1);return 0;}打印输出:
iterLowerBound10 = end
iterUperBound10 = end
iterLowerBound1 = begin
iterUperBound1 = begin
lower_bound(5) = 7
lower_bound(5) = 7
lower_bound(7) = 7
lower_bound(7) = 8
lower_bound(0) = 3
lower_bound(0) = 3
lower_bound(8) = 8
lower_bound(8) = end8
结论:
当参数 key 没有在 容器 key的范围内:
1. 小于容器key uper_bound, lower_bound 都将返回 begin.
2. 大于容器key uper_bound, lower_bound 都将返回 end
当参数key 在容器key 范围内:
1. 参数 key == 容器key. lower_bound 将返回当前key 的iterator, uper_bound 将返回下一个元素的iterator.
2. 参数 key 不等于 容器key,且在范围内, loer_bound将返回 比参数key 大的且相邻的容器key的iterator
3 如果 Key等于 begin 或等于 end,将返回begin 或end
- c++学习——容器搜索方法(lower_bound, uper_bound)
- c++学习——容器搜索方法(lower_bound, uper_bound)
- 容器搜索算法:lower_bound, uper_bound
- 学习C++——顺序容器(1)
- 学习C++——顺序容器(2)
- 学习C++——容器适配器
- 学习C++——关联容器
- 二分搜索:lower_bound, upper_bound
- lower_bound(二分搜索)
- STL: lower_bound, upper_bound用法(C++)
- Collections容器的搜索方法
- C++primer学习:关于upper_bound和lower_bound的探究.
- 读书笔记(C++)——【关联容器】
- 138_二分搜索 (lower_bound)
- [C++] upper_bound和lower_bound
- C++STL学习(1)容器vector
- C++STL学习(2)容器deque
- C++STL学习(3)容器list
- EXT总结1
- Android Tabhost部件
- 【word2010】论文排版技巧:设置目录和页码页眉
- [转载]利用MFC的Picture控件显示图像
- MFC_OnSize_改变窗口大小(WM_SIZE消息映射)
- c++学习——容器搜索方法(lower_bound, uper_bound)
- mathtype6.7 输入矩阵
- VIM操作
- jquery总结第二天
- amcharts学习
- 水晶报表在VC 6.0中的使用
- mathtype 6.7编辑的公式在word2010显示不全
- 山寨笔记-linux下各种文件的解压缩方法
- JDK的配置