2015-09-17-泛型算法

初窥算法

使用泛型算法必须包含algorithm头文件。泛化的算术算法包含在numeric头文件中。

只读算法

顾名思义,该类算法只会读取输入范围内的元素。

vector<int> vec;
...
int sum = accumulate(ivec.begin(),ivec.end(),40);//sum(ivec)+40

如果是string容器则是将容器的所有字符串连接起来。

find
find_first_of

写容器的算法

fill(vec.begin(),vec.end(),0)   //写入范围都赋予0值
fill_n(vec.begin(),10,0);   //不能写空容器
//或者
fill_n(back_inserter(vec), 10, 0);  //在末尾添加10个元素,vec可以为空

向目标函数写入未知个数的元素

copy(list.begin(), list.end(), back_inserter(ivec));
//或者
vecort<int> ivec(list.begin(),list.end()); //这种方法更好

替换

replace(ivec.begin(),ivec.end(),0,42); //42替换0,创建一个新的序列来存储元素处理的结果
replace_copy(ivec.begin(),ivec.end(), back_inserter(ivec2),0,42); //42替换0,ivec没改变,ivec2存储ivc的副本

排序

sort(vec.begin(), vec.end());   

删除相邻的重复元素

sort(ivec.begin(), ivec.end());
vector<int>::iterator end_unique =unique(ivec.begin(), ivec.end());
//将相邻的重复元素移到容器末尾
ivec.erase(end_unique, ivec.end());

算法不直接修改容器的大小,若需添加或者删除元素,则必须使用容器操作

迭代器

 插入迭代器

back_inserter           //push_back
front_inserter                  //vector不能用,push_front
inserter            //

iostream迭代器

反向迭代器

泛型算法结构

算法的形参模式

版权声明:本文为博主原创文章,未经博主允许不得转载。

posted @ 2015-10-02 00:18  mlhy  阅读(92)  评论(0编辑  收藏  举报