查找算法7
2016-03-06 19:56
337 查看
#include <iostream> #include <list> #include <algorithm> using namespace std; int main() { list<int> ilist; for (int i = 1; i <= 9; ++i) ilist.insert(ilist.end(),i); for (int i = 1; i <= 9; ++i) ilist.insert(ilist.end(), i); ilist.push_back(5); ilist.push_back(5); ilist.push_back(5); 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(), 5); // lower_bound是查找第一个数, cout << "第一个5的位置:" << distance(ilist.begin(), pos1) + 1 << endl; pos2 = upper_bound(ilist.begin(), ilist.end(), 5); //upper_bound 是查找这个数的最后一个位置, cout << "大于5的第一个位置:" << distance(ilist.begin(), pos2) + 1 << endl; //lower_bound /upper_bound 也可以作为插入, ilist.insert(lower_bound(ilist.begin(), ilist.end(), 5),5); // 在lower_bound(ilist.begin(), ilist.end(), 5)这个位置插入数字5, ilist.insert(upper_bound(ilist.begin(), ilist.end(), 5), 5); // 在upper_bound(ilist.begin(), ilist.end(), 5)这个位置插入数字5, 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(), 5); // equal_range代表的意思是lower_bound和upper_bound他们两个的含义, cout << distance(ilist.begin(), range.first) + 1 << endl; cout << distance(ilist.begin(), range.second) + 1 << endl; return 0; }
相关文章推荐
- 雪花飘落 - 定时器(NSTimer/CADisplayLink)
- Linux内核分析实验二:mykernel实验指导(操作系统是如何工作的)
- 抓取网页数据C#文件
- ant学习-使用ant生成jar包
- 构建之法阅读问题
- 九度-简单题 题目1065:输出梯形
- HUST 1603 Deadly Disease
- 设计模式之装饰模式
- TableView的cell返回nil问题
- 选择排序
- 设计模式概述
- C#成魔之路<6>ADO.NET数据访问技术(2)
- hdu1509 Windows Message Queue(优先队列水)
- 博客之路
- ubuntu快捷键
- 最近碰到的一些问题
- 十大OpenGL教程
- Maven学习——修改Maven的本地仓库路径
- 泰勒python笔记一 :零碎知识
- 学习莫队算法、、、