#include<iostream>
#include<string>
#include<vector>
#include<list>
#include<set>
#include<map>
#include<functional>
#include<algorithm>
using namespace std;
// 查找相关算法
void main_44_adjecent_find()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(3);
v1.push_back(1);
v1.push_back(5);
//查找相邻的重复元素,返回重复元素的值
vector<int>::iterator it = adjacent_find(v1.begin(), v1.end());
if (it == v1.end())
{
cout << " 没有找到 重复元素" << endl;
}
else
{
cout << *it << endl;
}
int index = distance(v1.begin(),it);
cout << index << endl;
}
void main_45_binary_search()//查找对象必须是有序的
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
v1.push_back(7);
v1.push_back(9);
//查找值为5的元素,返回bool值
bool b = binary_search(v1.begin(), v1.end(), 5);
if (b == true)
{
cout << "找到了!" << endl;
}
else
{
cout << "没找到!" << endl;
}
}
void main_46_count()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
v1.push_back(7);
v1.push_back(9);
//查找计算值为5的元素数量
int num = count(v1.begin(), v1.end(), 5);
cout << num << endl;
}
bool GreatThree(int &num)
{
return num > 3;
}
void main_47_count_if()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
v1.push_back(7);
v1.push_back(9);
//查找符合条件的元素数量
int num = count_if(v1.begin(), v1.end(), GreatThree);
cout << num << endl;
}
void main_47_find()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
v1.push_back(7);
v1.push_back(9);
vector<int>::iterator it = find(v1.begin(), v1.end(), 5);
cout << *it << endl;
}
void main_47_find_if()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
v1.push_back(7);
v1.push_back(9);
//查找第一个大于3的元素
vector<int>::iterator it = find_if(v1.begin(), v1.end(), GreatThree);
cout << *it << endl;
}
void main()
{
main_44_adjecent_find();
}