跳至內容

C++/Numeric

維基教科書,自由的教學讀本
< C++

numericb: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


參考文獻

[編輯]
  1. numeric頭文件說明