std::accumulate
![]() | このページは、Google 翻訳を使って英語版から機械翻訳されました。 翻訳には誤りや奇妙な言い回しがあるかもしれません。文章の上にポインタをおくと、元の文章が見れます。誤りを修正して翻訳を改善する手助けをしてください。翻訳についての説明は、ここをクリックしてください。 |
ヘッダ <numeric> で定義 | ||
template<class InputIt, class T > T accumulate( InputIt first, InputIt last, T init ); | (1) | |
template<class InputIt, class T, class BinaryOperation > T accumulate( InputIt first, InputIt last, T init, | (2) | |
Computes the sum of the given value init
and the elements in the range [first, last)
. The first version uses operator+
to sum up the elements, the second version uses the given binary function op
.
目次 |
[編集]パラメータ
first, last | - | 和への要素の範囲 Original: the range of elements to sum The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
init | - | initial value of the sum |
op | - | binary operation function object that will be applied. The signature of the function should be equivalent to the following: Ret fun(const Type1 &a, const Type2 &b); The signature does not need to have const&. |
型の要件 | ||
-InputIt は InputIterator の要件を満たさなければなりません。 | ||
-T は CopyAssignable および CopyConstructible の要件を満たさなければなりません。 |
[編集]値を返します
The sum of the given value and elements in the given range.
[編集]可能な実装
1つめのバージョン |
---|
template<class InputIt, class T> T accumulate(InputIt first, InputIt last, T value){for(; first != last;++first){ value = value +*first;}return value;} |
2つめのバージョン |
template<class InputIt, class T, class BinaryOperation> T accumulate(InputIt first, InputIt last, T value, BinaryOperation op){for(; first != last;++first){ value = op(value, *first);}return value;} |
[編集]例
#include <iostream>#include <vector>#include <numeric>#include <string> int multiply(int x, int y){return x*y;} std::string magic_function(std::string res, int x){return res +=(x >5)?"b":"s";} int main(){std::vector<int> v{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int sum = std::accumulate(v.begin(), v.end(), 0);int product = std::accumulate(v.begin(), v.end(), 1, multiply);std::string magic = std::accumulate(v.begin(), v.end(), std::string(), magic_function); std::cout<< sum <<'\n'<< product <<'\n'<< magic <<'\n';}
出力:
55 3628800 sssssbbbbb
[編集]参照
指定範囲の隣接する要素間の差を計算します (関数テンプレート) | |
2つの範囲の要素の内積を計算します (関数テンプレート) | |
指定範囲の要素の部分和を計算します (関数テンプレート) |