該函式用於累計指定區間的資料,也可以由使用者指定操作,而不一定是加法,其實現如下:
// 對區間[first,last)進行加和操作,__init為提供的初始值
template _tp accumulate(_inputiterator __first, _inputiterator __last, _tp __init)
// __binary_op為使用者提供的二元操作運算
template _tp accumulate(_inputiterator __first, _inputiterator __last, _tp __init, _binaryoperation __binary_op)
該函式用於對相鄰的兩個資料進行減法操作(後乙個資料減去前乙個資料),並將結果保留到目的區間,第乙個數直接複製到目的區間,當讓也可以由使用者提供二元操作來代替減法,其實現如下:
template _outputiterator adjacent_difference(_inputiterator __first, _inputiterator __last, _outputiterator __result)
template _outputiterator __adjacent_difference(_inputiterator __first, _inputiterator __last, _outputiterator __result, _tp*)
return ++__result;
}// 另乙個過載,使用使用者提供的二元操作__binary_op
template _outputiterator adjacent_difference(_inputiterator __first, _inputiterator __last,
_outputiterator __result, _binaryoperation __binary_op)
template _outputiterator
__adjacent_difference(_inputiterator __first, _inputiterator __last,
_outputiterator __result, _tp*,
_binaryoperation __binary_op)
return ++__result;
}
該函式恰好是adjacent_difference的逆運算,即將前乙個元素加到後乙個元素上,並將結果儲存至目的區間,其實現方法於adjacent_difference類似,此處不再贅述
對區間[first1,last1)和區間[first2, first2 + last1 - first1)的資料進行內積運算,也可以使用使用者指定的兩個運算來代器乘法和加法,其實現如下:
template _tp inner_product(_inputiterator1 __first1, _inputiterator1 __last1, _inputiterator2 __first2, _tp __init)
// __binary_op1代替加和運算, __binary_op2代替乘法運算
template _tp inner_product(_inputiterator1 __first1, _inputiterator1 __last1,
_inputiterator2 __first2, _tp __init,
_binaryoperation1 __binary_op1,
_binaryoperation2 __binary_op2)
STL常用數值演算法
include include include include include include includeusing namespace std 數值演算法 accumulate 累加或者類乘 partial sum 區域性求和 fill fill n 填充 初始化時使用方便 equal判斷兩區...
STL之數值演算法
必須包含標頭檔案 include include include include include ostream iterator using namespace std int main vectoriv ia,ia 5 cout accumulate iv.begin iv.end 0 endl...
STL(二十四)數值演算法
一組對容器元素進行數值計算的模板函式,包括容器元素求和accumulate 兩序列元素的內積inner product 容器元素的一系列部分元素和partial sum 容器每對相鄰元素的差 由sgi c stl擴充套件的遞增賦值iota以及n次方power計算等。include 一 遞增賦值iot...