C++/Numeric
外觀
< C++
numeric 是b:C++標準程式庫中的一個b:頭文件,定義了C++ STL標準中的基礎性的數值算法(均為函數模板)。[1]
accumulate
[編輯]- accumulate(inIterBegin, inIterEnd, val),以val為初值,對迭代器給出的值序列做累加,返回累加結果值。值類型必須支持
+
(加法)算符。 - accumulate(inIterBegin, inIterEnd, val, binFunc)為重載形式,其中binFunc為二元函數。對迭代器給出的每個值對象containerVal,執行val=binFunc(val,containerVal),返回計算結果。例如,可用於計算累乘。
adjacent_difference
[編輯]- adjacent_difference(inIterBegin, inIterEnd, outIterBegin),對輸入序列,計算相鄰兩項的差值,寫入到輸出序列中。
- adjacent_difference(inIterBegin, inIterEnd, outIterBegin, binFunc)重載形式。把減法運算符換為執行binFunc二元函數。
exclusive_scan
[編輯]similar to std::partial_sum, excludes the ith input element from the ith sum
iota
[編輯]- iota (ForwardIterator first, ForwardIterator last, T val),向序列中寫入以val為初值的連續值序列。
示例程序:
// iota example
#include <iostream> // std::cout
#include <numeric> // std::iota
#include <iterator>
#include <vector>
int main () {
std::vector<int> numbers(10);
std::iota (numbers.begin(),numbers.end(),100);
std::copy( numbers.begin(), numbers.end(), std::ostream_iterator<int>(std::cout, " "));
return 0;
}
gcd
[編輯]constexpr函數模板,返回兩個整數的最大公約數
inclusive_scan
[編輯]similar to std::partial_sum, includes the ith input element in the ith sum
inner_product
[編輯]- inner_product(inIter1Begin, inIter1End, inIter2Begin, val),計算兩個輸入序列的b:內積。
- inner_product(inIter1Begin, inIter1End, inIter2Begin, val, binFunc1, binFunc2)重載形式。把上述的加法操作換為執行binFunc二元函數。
lcm
[編輯]constexpr函數模板,返回兩個整數的最小公倍數
partial_sum
[編輯]- partial_sum(inIterBegin, inIterEnd, outIterBegin),計算輸入序列從開始位置到當前第i個位置的累加值,寫入輸出序列第i個位置。
- partial_sum(inIterBegin, inIterEnd, outIterBegin, binFunc)重載形式,把上述的加法操作換為執行binFunc二元函數。
reduce
[編輯]similar to std::accumulate, except out of order
transform_reduce
[編輯]applies a functor, then reduces out of order
transform_inclusive_scan
[編輯]applies a functor, then calculates inclusive scan
transform_exclusive_scan
[編輯]applies a functor, then calculates exclusive scan