|
while은 물론, if 조차도 없습니다. ^^;
//---------------------------------------------------------------------------
#include <iostream>
#include <sstream>
#include <string>
#pragma hdrstop
#include <vector>
#include <algorithm>
#include <numeric>
#include <iterator>
//---------------------------------------------------------------------------
using namespace std;
struct int_to_str
{
string operator()(const int n) const
{
stringstream ss;
ss << n;
return ss.str();
}
};
class concat_with
{
private:
string delim_;
public:
concat_with(string delim): delim_(delim) {}
string operator()(const string& lhs, const string& rhs) const
{
return lhs + delim_ + rhs;
}
};
#pragma argsused
int main(int argc, char* argv[])
{
const int MAX_ELM = 50;
vector<int> sequence(MAX_ELM), part_sums(MAX_ELM);
vector<string> s_sequence(MAX_ELM), s_series(MAX_ELM), s_part_sums(MAX_ELM);
iota(sequence.begin(), sequence.end(), 1); // 1, 2, 3, ... ,50
transform(sequence.begin(), sequence.end(), s_sequence.begin(),
int_to_str()); // "1", "2", "3", ... ,"50"
partial_sum(s_sequence.begin(), s_sequence.end(), s_series.begin(),
concat_with("+")); // "1", "1+2", "1+2+3", ... "1+2+3+...+50"
partial_sum(sequence.begin(), sequence.end(), part_sums.begin());
// 1, 3, 6, ... , 1275
transform(part_sums.begin(), part_sums.end(), s_part_sums.begin(),
int_to_str()); // "1", "3", "6", ... , "1275"
transform(s_series.begin(), s_series.end(), s_part_sums.begin(),
ostream_iterator<string>(cout, "\n"), concat_with("="));
cout << "Total sum = " << accumulate(part_sums.begin(), part_sums.end(), 0)
<< endl;
return 0;
}
//---------------------------------------------------------------------------
|