#include<iostream>
#include<vector>
#include<string>
#include<numeric>
#include<algorithm>
#include<iterator>
using namespace std;
bool isDivided2(int num)
{
return num%2==0;
}
int main(int cnt,char *argv[])
{
int l[5]={1,3,3,4,6};
int findl[1]={10};
cout<<accumulate(l,l+5,0)<<endl; //累加,第三个参数用于指定初始值和推断返回类型
//输出17
cout<<(find_first_of(&l[0],&l[5],&findl[0],&findl[1])!=&l[5])<<endl;;
//输出0,即没找到
int *endp=unique(l,l+5); //数组元素被移动,前N个都是唯一元素,返回N+1的位置
for (int i=0;i<5;i++)
{
if(&l[i]==endp)
cout<<"#";
cout<<l[i];
}
cout<<endl;//输出1346#6 6被复制到前面,所以多出一个6
cout<<"find_if Test\n";
vector<int> lv(l,l+5);
vector<int>::iterator itr=lv.begin();
while ((itr=find_if(itr,lv.end(),isDivided2))!=lv.end()) //找出所有能被2整除的数
{
cout<<*itr;
++itr;
}
cout<<endl; //输出466
//插入迭代器
//back_inserter front_inserter inserter
cout<<"back_inserter Test\n";
vector<int> v;
cout<<v.size()<<endl;//0
back_insert_iterator<vector<int>> t=back_inserter(v);
fill_n(back_inserter(v),10,1);//要动态增加迭代器大小,可以用back_inserter包装
cout<<v.size()<<endl;//10
cout<<"replace_copy Test\n";
int nl[5];//l:[1,3,4,6,6]
replace_copy(l,l+5,nl,3,1); //将源迭代器范围内元素复制到新范围内,值为3的替换为1
for(int i=0;i<5;i++)
cout<<nl[i];
cout<<endl;//11466
return 0;
}