C++标准库算法


  C++标准库有100多个算法,重在理解它们的结构(形参模式)

  它们都含有一组形参规范。理解这些形参规范有利于学习新的算法--只要知道形参的含义。大多数算法采用下面四种形式之一:

  alg(beg, end, other parms);

  alg(beg, end, dest, other parms);

  alg(beg, end, beg2, other parms);

  alg(beg, end, beg2, end2, other parms);

其中,alg 是算法的名字,beg和end指定算法操作的元素范围。我们通常将该范围称为算法的“输入范围”。dest、beg2和end2是迭代器。


算法简介:

( 1)查找对象的算法:
  find(beg,end,val)
  count(beg,end,val)
  find_if(beg,end,unaryPred)
  count_if(beg,end,unaryPred)
  find_first_of(beg1,end1,beg2,end2)
  find_first_of(beg1,end1,beg2,end2,binaryPred)
  find_end(beg1,end1,beg2,end2)
  find_end(beg1,end1,beg2,end2,binaryPred)
  adjacent_find(beg,end)
  adjacent_find(beg,end,binaryPred)
  search(beg1,end1,beg2,end2)
  search(beg1,end1,beg2,end2,binaryPred)
  search_n(beg,end,count,val)
  search_n(beg,end,count,val,binaryPred)
  ( 2)其他只读算法:
  for_each(beg,end,f)
  mismatch(beg1,end1,beg2)
  mismatch(beg1,end1,beg2,binaryPred)
  equal(beg1,end1,beg2)
  equal(beg1,end1,beg2,binaryPred)
  ( 3)二分查找算法:
  lower_bound(beg,end,val)
  lower_bound(beg,end,val,comp)
  upper_bound(beg,end,val)
  upper_bound(beg,end,val,comp)
  equal_range(beg,end,val)
  equal_range(beg,end,val,comp)
  binary_search(beg,end,val)
  binary_search(beg,end,val,comp)
  ( 4)写容器元素的算法:
  fill_n(dest,cnt,val)
  generate_n(dest,cnt,Gen)
  copy(beg,end,dest)
  transform(beg,end,dest,unaryOp)
  transform(beg,end,beg2,dest,binaryOp)
  replace_copy(beg,end,dest,old_val,new_val)
  replace_copy_if(beg,and,dest,unaryPred,new_val)
  merge(beg1,end1,beg2,end2,dest)
  merge(beg1,end1,beg2,end2,dest,comp)
  swap(elem1,elem2)
  iter_swap(iter1,iter2)
  swap_ranges(beg1,end1,beg2)
  fill(beg,end,val)
  generate(beg,end,Gen)
  replace(beg,end,old_val,new_val)
  replace_if(beg,end,unaryPred,new_val)
  copy_backward(beg,end,dest)
  inplace_merge(beg,mid,end)
  inplace_merge(beg,mid,end,comp)
  ( 5)划分与排序算法:
  stable_partition(beg,end,unaryPred)
  partition(beg,end,unaryPred)
  sort(beg,end)
  stable_sort(beg,end)
  sort(beg,end,comp)
  stable_sort(beg,end,comp)
  partial_sort(beg,mid,end)
  partial_sort(beg,mid,end,comp)
  partial_sort_copy(beg,end,destBeg,destEnd)
  partial_sort_copy(beg,end,destBeg,destEnd,comp)
  nth_element(beg,nth,end)
  nth_element(beg,nth,end,comp)
  ( 6)通用重新排序算法:
  remove(beg,end,val)
  remove_if(beg,end,unaryPred)
  unique(beg,end)
  unique(beg,end,binaryPred)
  rotate(beg,mid,end)
  reverse(beg,end)
  reverse_copy(beg,end,dest)
  remove_copy(beg,end,dest,val)
  remove_copy_if(beg,end,dest,unaryPred)
  unique_copy(beg,end,dest)
  unique_copy(beg,end,dest,binaryPred)
  rotate_copy(beg,mid,end,dest)
  random_shuffle(beg,end)
  random_shuffle(beg,end,rand)
  ( 7)排列算法:
  next_permutation(beg,end)
  next_permutation(beg,end,comp)
  prev_permutation(beg,end)
  prev_permutation(beg,end,comp)
  ( 8)有序序列的集合算法:
  includes(beg,end,beg2,end2)
  includes(beg,end,beg2,end2,comp)
  set_union(beg,end,beg2,end2,dest)
  set_union(beg,end,beg2,end2,dest,comp)
  set_intersection(beg,end,beg2,end2,dest)
  set_intersection(beg,end,beg2,end2,dest,comp)
  set_difference(beg,end,beg2,end2,dest)
  set_difference(beg,end,beg2,end2,dest,comp)
  set_symmetric_difference(beg,end,beg2,end2,dest)
  set_symmetric_difference(beg,end,beg2,end2,dest,comp)
  (8)最大值和最小值算法:
  min(va1,va2)
  min(val1,val2,comp)
  max(val1,val2)
  max(val1,val2,comp)
  min_element(beg,end)
  min_element(beg,end,comp)
  max_element(beg,end)
  max_element(beg,end,comp)
  lexicographical_compare(beg1,end1,beg2,end2)
  lexicographical_compare(beg1,end1,beg2,end2,comp)
  ( 10)算术算法:
  accumulate(beg,end,init)
  accumulate(beg,end,init,BinaryOp)
  inner_product(beg1,end1,beg2,init)
  inner_product(beg1,end1,beg2,init,BinOp1,BinOp2)
  partial_sum(beg,end,dest)
  partial_sum(beg,end,dest,BinaryOp)
  adjacent_difference(beg,end,dest)
  adjacent_difference(beg,end,dest,BinaryOp)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值