數值演算法屬於泛型演算法, 定義在標頭檔案numeric中
數值演算法要求輸入迭代器,如果演算法輸出資料,則使用輸出迭代器表示目的位置
定製:除iota外,數值演算法都提供了過載版本(即用謂詞代替預設運算子的自定義版本)
1 accumulate
accumulate
(beg,end,init)
;accumulate
(beg,end,init,binaryop)
;
返回輸入序列中所有值的和,和的初值從init指定的值開始
第乙個版本使用元素型別的+運算子,第二個版本使用指定的二元操作
2 inner_product
inner_product
(beg,end,beg2,init)
;inner_product
(beg,end,beg2,init,binop1,binop2)
;
返回兩個序列的內積(即對應元素的積的和),和的初值由init指定的值開始
第乙個版本使用元素型別的*和+,第二個版本使用給定的二元操作,使用第乙個操作代替加法,使用第二個操作代替乘法
3 partial_sum
partial_sum
(beg,end,dest)
;partial_sum
(beg,end,dest,binaryop)
;
新序列寫入dest,每個新元素的值都等於輸入範圍中當前位置和之前位置上所有元素之和
第乙個版本使用元素型別的+運算子,第二個版本使用指定的二元操作
4 adjacent_difference
adjacent_difference
(beg,end,dest)
;adjacent_difference
(beg,end,dest,binaryop)
;
新序列寫入dest,每個新元素的值都等於輸入範圍內當前元素與前乙個元素之差。
第一版本使用元素型別的-運算子,第二個版本使用指定的二元操作
5 iota
iota
(beg,end,val)
;
將val賦給首元素並遞增val。將遞增後的值賦予下乙個元素,繼續遞增val。
iota沒有提供過載版本
泛型演算法之equal
校驗兩個區間是否相等 bool equal inputiterator1 beg,inputiterator1 end,inputiterator2 cmpbeg bool equal inputiterator1 beg,inputiterator1 end,inputiterator2 cmpb...
《演算法之美》 遞迴 數值型
為什麼是數學歸納法?有個小孩正在上樓梯,樓梯有n階台階,小孩一次可以上1階 2階 3階。請實現乙個方法,計算小孩有多少種上樓的方式。為了防止溢位,請將結果mod 1000000007 給定乙個正整數int n,請返回乙個數,代表上樓的方式數。保證n小於等於100000。public class 9 ...
C 泛型演算法
標準庫並未給每個容器都定義成員函式來實現這些操作,而是定義了一組泛型演算法,稱他們為演算法是因為他們實現了一些經典演算法的公共介面,如排序和搜尋 稱他們為排序的是因為它們可以用於不同型別的元素和多種容器型別。大多數演算法都定義在標頭檔案algorithm中。標準庫還在標頭檔案numeric中定義了一...