查找算法7

#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;
}

你可能感兴趣的:(查找算法7)