#include <bits/stdc++.h>
using namespace std;
class GreaterThan50
{
public:
bool operator() (int x) const {return x>50;}
};
int main()
{
vector <int> v1;
vector <int> v2(20);
for(int i=0;i<=19;i++)
{
v1.push_back(i*i);
}
vector<int>::iterator where;
vector<int>v2(10);
v2[0]=1;v2[1]=2;v2[2]=5;v2[3]=6;v2[4]=4;v2[5]=3;v2[6]=2;v2[7]=5;v2[8]=5;v2[9]=6;
int a[20]={1,2,5,6,4,3,2,5,5,6,9,8,7,5,5,4,4,4,1,2};
/////////////////
where=find_if(v1.begin(),v1.end(),GreaterThan50());//查找第一个大于50的元素的位置
cout<<*where<<endl;//*where=64;
/////////////////
where=find(v1.begin(),v1.end(),9);//区间查找某元素,找到返回第一次出现的位置,没找到返回end();
cout<<*where<<endl;
where=find(v1.begin(),v1.end(),10);
if(where==v1.end()) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
////////////////
where=adjacent_find(v1.begin(),v1.end());//区间查找第一对相邻且相等的元素对,如果找到返回第一个元素的位置,没找到返回end();
cout<<*where<<endl;
where=adjacent_find(v1.begin(),v1.end());
if(where==v1.end()) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
////////////////
cout<<count(&a[0],&a[19],5)<<endl;//区间查找某元素的个数
///////////////
if(equal(&a[0],&a[9],v1.begin())) cout<<"相同"<<endl;//对于两个区间比较,[first1,last1)和[first2,first2+last1-first1),若相同返回true;
else cout<<"不同"<<endl;
///////////////
string st1="asdfhghjhkl";
string st2="fhghjhk";
string::iterator it;
it=search(st1.begin(),st1.end(),st2.begin(),st2.end());//判断后一个区间是否为前一个区间的子串,是返回第一次出现的位置,不是返回last1;可用于其他容器
cout<<*it<<endl;
//////////////
cout<<"&&&&&"<<endl;
vector<int> v4(v2.size());//重点!!!初始定义时就应该定义长度只可以大不可以小!!!
copy(v2.begin(),v2.end(),v4.begin());//把一个区间复制到另一个区间,两者容器相同
for(where=v4.begin();where!=v4.end();where++)
{
cout<<*where<<' ';
}
cout<<endl;
/////////////
fill(v2.begin(),v2.end(),2333);//区间赋值
for(where=v2.begin();where!=v2.end();where++)
{
cout<<*where<<' ';
}
cout<<endl;
/////////////
replace(&st1[0],&st1[10],'g','h');//区间替换一个元素为另一个元素
cout<<st1<<endl;
/////////////
remove(v1.begin(),v1.end(),9);//区间删除单个元素,其他元素间位置不改变
for(where=v1.begin();where!=v1.end();where++)
{
cout<<*where<<' ';
}
cout<<endl;
////////////
sort(v4.begin(),v4.end(),greater<int>());//降序
for(where=v4.begin();where!=v4.end();where++)
{
cout<<*where<<' ';
}
cout<<endl;
sort(v4.begin(),v4.end(),less<int>());//升序
for(where=v4.begin();where!=v4.end();where++)
{
cout<<*where<<' ';
}
cout<<endl;
////////////
//lower_bound()和upper_bound()只能用于升序,不可用于降序
where=lower_bound(v4.begin(),v4.end(),5);//返回第一个大于等于x的迭代器
cout<<*where<<endl;
where=lower_bound(v4.begin(),v4.end(),5.5);
cout<<*where<<endl;
where=upper_bound(v4.begin(),v4.end(),5);//返回第一个大于x的迭代器
cout<<*where<<endl;
///////////
return 0;
}