泛型演算法之數值演算法 numeric標頭檔案 詳細介紹

2021-09-27 22:08:00 字數 1227 閱讀 6777

數值演算法屬於泛型演算法, 定義在標頭檔案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中定義了一...