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迭代器
反向迭代器
泛型算法结构
算法的形参模式
版权声明:本文为博主原创文章,未经博主允许不得转载。