查找-7

#include<iostream>
#include<vector>
#include<algorithm>
#include<list>

//已序区间的查找算法

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.sort();//排序

	for (auto iter = ilist.begin(); iter != ilist.end(); ++iter)
		cout << *iter << " ";
	cout << endl;

	auto pos1 = lower_bound(ilist.begin(), ilist.end(), 5);//查找第一个5的位置
	cout << "first 5:" << distance(ilist.begin(),pos1)+1<< endl;
	auto pos2 = upper_bound(ilist.begin(), ilist.end(), 5);//查找最后一个5的位置
	cout << "大于5的用第一个位置:" << distance(ilist.begin(), pos2)+1<< endl;
	//distance第一个距离是0,第二个距离是1

	ilist.insert(lower_bound(ilist.begin(), ilist.end(), 5),5);
	ilist.insert(upper_bound(ilist.begin(), ilist.end(), 5), 5);//5de houbian 
	 
	for (auto iter = ilist.begin(); iter != ilist.end(); ++iter)
		cout << *iter << " ";
	cout << endl;

	//equal返回结果包括两个
	//pair是一对
	pair<list<int>::iterator,list<int>::iterator >  range;//lower+upper
	range = equal_range(ilist.begin(), ilist.end(), 5);
	cout << distance(ilist.begin(), range.first) +1<< endl;
	cout << distance(ilist.begin(), range.second) +1<< endl;
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42655231/article/details/82807292
今日推荐