#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; }