C++標准庫算法簡介【轉】


算法簡介
  標准庫定義了 100多個算法,要學習如何使用它們,需要理解它們的結構,而不是記住每個算法的細節
  ( 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)
  總結:
  查找對象的算法、其他只讀算法、二分查找算法、寫容器元素的算法、划分與排序算法、通用重新排序算法、排列算法、有序序列的集合算法、最大值和最小值算法、算術算法

 


   再談 IO 庫
  iostream中定義的操縱符: boolalpha,noboolalpha,showbase,noshowbase,showpoint,noshowpoint,showpos,noshowpos,uppercase,nouppercase,dec,hex,oct,left,right,internal,fixed,scientific,flush,ends,endl,unitbuf,nounitbuf,skipws,noskipws,ws
  iomanip中定義的操縱符: setfill(ch),setprecision(n),setw(w),setbase(b)
  改變流格式狀態的操縱符通常為后續 IO保留改變后的格式狀態
  取消操縱符的任何狀態改變通常是最好的。一般而言,流應該在每個 IO操作之后處於通常的默認狀態
  用 flags操作恢復格式狀態: flags()返回流的當前格式狀態,返回值是名為 fmtflags的標准庫類型。 flags(arg)將流格式置為指定格式
  控制輸出格式:有兩大類,控制數值的表示,控制填充符的數量和布局
  單字節低級 IO操作: is.get(ch),os.put(ch),is.get(),is.putback(ch),is.unget(),is.peek()
  文件結束符: EOF,在 中定義
  多字節操作: is.get(sink,size,delim),is.getline(sink,size,delim),is.read(sink,size),is.gcount(),os.write(source,size),is.ignore(size,delim)
  流的隨機訪問:函數 seekg,tellg,seekp,tellp。
  普通 iostream對象一般不允許隨機訪問
  在大多數系統上,綁定到 cin,cout,cerr和 clog的流不支持隨機訪問。隨機訪問特性常用於 fstream和 sstream。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM