您的位置:首页 > 其它

查找算法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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: