std::accumulate
提供: C++入門
(Std::accumulateから転送)
スポンサーリンク
読み方
- std::accumulate
- えすてぃーでぃー あきゅむれーと
目次
概要
std::accumulate は、配列の値の総和を求めたり、関数オブジェクトを用いることで、和以外の計算を簡単に行えます。
accumulate の意味は、以下の通りです。
- 他動
- 積み上げる、蓄積する、集める
- 自動
- ふえる、積もる、集まる
合計を求める例
ソースコード std_accumulate_sum_1.cpp
#include <iostream> #include <boost/foreach.hpp> #include <vector> #include <numeric> using namespace std; void dump(vector<int>& v) { BOOST_FOREACH(int x, v) { cout << x << endl; } } int main (int argc, char *argv[]) { vector<int> v; v.push_back ( 3 ); v.push_back ( 4 ); v.push_back ( 1 ); v.push_back ( 2 ); cout << "Value" << std::endl; dump (v); int sum = std::accumulate(v.begin(), v.end(), 0 ); cout << "Sum" << std::endl; cout << sum << std::endl; return 0; }
コンパイル
g++ -I/usr/local/include std_accumulate_sum_1.cpp -o std_accumulate_sum_1
実行例
% ./std_accumulate_sum_1 Value 3 4 1 2 Sum 10
関数オブジェクトを利用して総乗を求める例
ソースコード std_accumulate_function_object.cpp
#include <iostream> #include <boost/foreach.hpp> #include <vector> #include <numeric> using namespace std; void dump(vector<int>& v) { BOOST_FOREACH(int x, v) { cout << x << endl; } } class Multiply { public: int operator() (const int sum, const int value) { return sum * value; } }; int main (int argc, char *argv[]) { vector<int> v; v.push_back ( 3 ); v.push_back ( 4 ); v.push_back ( 1 ); v.push_back ( 2 ); cout << "Value" << std::endl; dump (v); int sum = std::accumulate(v.begin(), v.end(), 1, Multiply() ); cout << "Multiply" << std::endl; cout << sum << std::endl; return 0; }
コンパイル
g++ -I/usr/local/include std_accumulate_function_object.cpp -o std_accumulate_function_object
実行例
% ./std_accumulate_function_object Value 3 4 1 2 Multiply 24
関連項目
ツイート
スポンサーリンク