第十章:泛型算法概览

1.泛型算法:
经典算法的公共接口,可以用于不同类型的元素和多种容器类型,只会运行于迭代器上而不会执行容器特有的操作。

2.常见算法

find(b, e, v);     		//查找
find_if(b, e, pred);
accumulate(b, e, init_v);
equal(b1, e1, b2);     	//默认第二序列长度≥第一序列

———————————————————————————————————————

fill(b, e, v);               //值重置
fill_n(b, n, v);             //从b开始的n个元素赋予v值,确保容器含有n个元素
fill_n(b_i, n, v);         	 //插入迭代器,插入值时调用push_back(),back_inserter(vec):获取vec的尾后插入迭代器 

———————————————————————————————————————

copy(b, e, d); 							//将一序列元素拷贝到另一序列,确保空间足够
replace(b, e, old_v, new_v) 			//相关值的替换
replace_copy(b, e, d, old_v, new_v) 	//相关值的替换,但不改变原序列,将新序列存放到d处

———————————————————————————————————————

sort(b, e);
unique(b, e);  //将消除重复元素,但多余的不会删除,毕竟算法无法增删容器的内容(返回指向消除重复元素后序列的尾值)
vec.erase(尾值迭代器,vec.end())   //删除多余元素用容器自己的方法

———————————————————————————————————————

sort(b, e, pred)    			//pred谓词,分为一元谓词和二元谓词,迭代器的元素可以作为参数传入
stable_sort(b, e, pred) 		//维持原有相等元素的相对顺序
for_each(b, e, pred|lambda) 	//对每个元素进行相应的操作
transform(b, e, d, pred)		//将序列处理后转入新序列

3.算法格式

(b, e, args)
(b, e, d, args)
(b1, e1, b2, args)
(b1, e1, b2, e2, args)

4.特定容器算法
list,forward_list(双链表和单链表)
如通用版sort要求随机迭代器,所以链表有自己的sort、merge、remove、reverse、unique

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值