查找算法-1

//查找算法
//关联式容器已经排序了,速度快
#include<iostream>
#include<string>
#include<set>
#include<list>
#include<algorithm>
#include<vector>
#include<functional>

using namespace std;

int main()
{
	list<int> l;

	for (int i = 0; i <= 9; ++i)
	{
		l.insert(l.end(), i);
	}
	for (int i = 0; i <= 9; ++i)
	{
		l.insert(l.end(), i);
	}

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

	cout << endl;

	list<int>::iterator pos1;
	list<int>::iterator pos2;
	pos1 = find(l.begin(), l.end(), 4);
	if (pos1 != l.end())
	{
		pos2 = find(++pos1, l.end(), 4);
	}
	if (pos1 != l.end() && pos2 != l.end())
	{
		for (auto iter = pos1; iter != pos2; ++iter)
			cout << *iter << " ";
	}
	cout << endl;

	vector<int> vec;
	vector<int>::iterator pos;
	for (int i = 1; i <= 9; ++i)
	{
		vec.push_back(i);
	}
	for (auto iter = vec.begin(); iter != vec.end(); ++iter)
	{
		cout << *iter << " ";
	}
	cout << endl;
	pos = find_if(vec.begin(), vec.end(), bind2nd(greater<int>(), 3));//找到了大于3的数
	cout << *pos << endl;
	pos = find_if(vec.begin(), vec.end(), not1(bind2nd(modulus<int>(), 3)));//能够被3整除的数字
	cout << *pos << endl;

	//关联式容器
	set<int>  a;//自动排序,自动平衡的红黑树
	a.insert(43);//插入数据之后,他们会自动排序
	a.insert(78);
	a.insert(24);
	a.insert(66);
	for (set<int>::iterator iter = a.begin(); iter != a.end(); ++iter)
		cout << *iter <<" ";
	cout << endl;


	auto pos3 = a.find(78);
	if (pos3 !=a.end())
		cout << " find ok" << endl;
	else
		cout << "find fail" << endl;

	string s("aaabbsdhd");
	auto pos5 = s.find("bsd");
	if (pos5 != string::npos)
		cout << "ok" << endl;


	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42655231/article/details/82788500