STL修改算法

 

 

修改算法:

算法

用法

说明

copy

OutIt copy(InIt first,InIt last,OutIt x);

将[first,last)之间的元素复制到x指定的位置

copy_backward

BidIt2 copy_backward(BidIt1 first,BidIt1 last,BidIt2 x);

将[first,last)之间的元素复制到x指定位置的前面

fill

void fill(FwdIt first,FwdIt last,const T& x);

将[first,last)之间的部分用元素x填充

fill_n

void fill_n(OutIt first, Size n,const T& x);

从first开始向容器中填充n个元素x

generate

void generate(FwdIt first,FwdIt last, Gen g);

调用函数g()填充[first,last)之间的元素

generate_n

void generate_n(OutIt first,size n, Gen g);

调用函数g()填充从first开始的n个元素

remove

FwdIt remove(FwdIt first,FwdIt last,const T& val);

从[first,last)中删除元素val,返回新区间中最后一个元素后的位置

remove_if

FwdIt remove_if(FwdIt first,FwdIt last, Pred pr);

从[first,last)中删除所有能使函数pr返回true的元素,返回新区间最后一个元素后的位置

remove_copy

OutIt remove_copy(InIt first,InIt last,OutIt x,const T& val);

从[first,last)中删除元素val,并把其余的元素复制到x开始的区间中,返回被拷贝的最后一个元素的位置

remover_copy_if

OutIt remove_copy_if(InIt first,InIt last,OutIt x,Pred pr);

从[first,last)中删除所有能使函数pr返回true的元素,并把其余元素复制到x开始的空间,返回被拷贝最后一个元素的位置

replace

void replace(FwdIt first,FwdIt last,const T& vold,const T& vnew);

用vnew替换[first,last)中所有值为vold的元素

replace_if

void replace_if(FwdIt first,FwdIt last,Pred pr,const T& val);

用val替换[first,last)中所有能使函数pr返回true的元素

replace_copy

OutIt replace_copy(InIt first,InIt last,OutIt x,const T& vold,const T& vnew);

把[first,last)中的所有元素复制到以x开始的空间中,如果拷贝的元素中存在值为vold的元素,则以vnew替换,返回拷贝到目标容器的最后一个元素的后一个位置

replace_copy_if

OutIt replace_copy_if(InIt first,InIt last,OutIt x,Pred pr,const T& val);

把[first,last)中的所有元素复制到以x开始的空间中,如果拷贝的元素中存在能够使函数pr返回true的元素,则以vnew替换,返回拷贝到目标容器的最后一个元素的后一个位置

swap

void swap(Container &c1,Container &c2);

交换容器c1与c2的元素

iter_swap

void iter_swap(FwdIt1 x,FwdIt2 y);

交换迭代器x,y所指元素的值

swap_ranges

FwdIt2 swap_ranges(FwdIt1 first,FwdIt1 last,FwdIt2 x);

用起始于x的连续元素交换区间[first,last)的所有元素,返回第二个区间的最后一个元素的下一个位置

sort

void sort(RanIt first, RanIt last);

void sort(RanIt first, RanIt last, Pred pr);

将区间[first,last)中的元素按升序排序,第二种形式pr用于设定比较函数

merge

OutIt merge(InIt1 first1,InIt1 last1,InIt2 first2,InIt2 last2,OutIt x);

OutIt merge(InIt1 first1,InIt1 last1,InIt2 first2,InIt2 last2,OutIt x, Pred pr);

合并两个有序区间[first1,last1)和[first2,last2),并将合并后的元素存储到x开始的容器里,第二种形式pr(elem1,elem2)指定比较规则

inplace_merge

void inplace_merge(BidIt first, BidIt middle, BidIt last);

void inplace_merge(BidIt first, BidIt middle, BidIt last, Pred pr);

合并区间[first,middle)和[middle,last),并将合并后的元素存储到first开始的区间,第二种形式pr(elem1,elem2)指定比较规则

reverse

void reverse(BidIt first, BidIt last);

将区间[first,last)的元素顺序倒置

reverse_copy

OutIt reverse_copy(BidIt first, BidIt last,OutIt x);

将区间[first,last)的元素拷贝到x开始的区间,导致拷贝的元素顺序,源区间没有被修改,返回拷贝到目标区间的最后一个元素的下一个位置

rotate

void rotate(FwdIt first,FwdIt middle,FwdIt last);

交换区间[first,middle)和[middle,last)的元素位置

rotate_copy

OutIt rotate_copy(FwdIt first,FwdIt middle,FwdIt last,OutIt x);

将区间[first,last)的元素拷贝到x开始的容器中,拷贝时交换[first,middle)和[middle,last)的位置,源区间不发生修改,返回拷贝到目标区间的最后一个元素的下一位

random_shuffle

void random_shuffle(RanIt first, RanIt last);

void random_shuffle(RanIt first, RanIt last, Fun& f);

对区间[first,last)上的元素进行随机排序,f用于指定排序函数

transform

OutIt transform(InIt first,InIt last,OutIt x, Unop uop);

对区间[first,last)上的所有元素执行uop(elem)操作,结果放到以x开始的区间内,返回拷贝到目标端的最后一个元素的下一位

transform

OutIt transform(InIt1 first1,InIt1 last1,InIt2 first2,OutIt x, Binop bop);

对区间[first1,last1)和以first2开始的区间的元素执行二元运算bop(elem1,elem2),结果放到以x开始的区间内,返回拷贝到目标端的最后一个元素的下一位

set_itersection

OutIt set_intersection(InIt1 first1,InIt1 last1,InIt2 first2,InIt2 last2,OutIt x);

OutIt set_intersection(InIt1 first1,InIt1 last1,InIt2 first2,InIt2 last2,OutIt x, Pred pr);

求两个区间[first1,last1),[first2,last2)的交集,存储到x开始的容器里,源区间元素没有被修改,pr用于指定操作函数,返回拷贝到目标区间的最后一个元素的下一个位置

set_union

OutIt set_union(InIt1 first1,InIt1 last1,InIt2 first2,InIt2 last2,OutIt x);

OutIt set_union(InIt1 first1,InIt1 last1,InIt2 first2,InIt2 last2,OutIt x, Pred pr);

求两个区间[first1,last1),[first2,last2)的并集,存储到x开始的容器里,源区间元素没有修改,pr用于指定操作函数,返回拷贝到目标区间的最后一个元素的下一位

set_difference

OutIt set_difference(InIt1 first1,InIt1 last1,InIt2 first2,InIt2 last2,OutIt x);

OutIt set_difference(InIt1 first1,InIt1 last1,InIt2 first2,InIt2 last2,OutIt x, Pred pr);

求两个集合[first1,last1),[first2,last2)的差集,存储到x开始的容器里,源区间元素没有被修改,pr用于指定操作函数,返回拷贝到目标区间的最后一个元素的下一个位置

set_symmetric_

difference

OutIt set_symmetric_difference(InIt1 first1,InIt1 last1,InIt2 first2,InIt2 last2,OutIt x);

OutIt set_symmetric_difference(InIt1 first1,InIt1 last1,InIt2 first2,InIt2 last2,OutIt x, Pred pr);

求集合[first1,last1),[first2,last2)的对称差(即(A-B)+(B-A)),存储到x开始的容器里,源区间元素没有被修改,pr用于指定操作函数,返回拷贝到目标区间最后一个元素的下一个位置

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值