Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[1630] Re: STL을 이용하여 for를 안 쓰고 하는 방법!
김백일 [cedar] 1240 읽음    2002-11-26 14:23
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;
}
//---------------------------------------------------------------------------

+ -

관련 글 리스트
1628 함수를 이용하여 for문 결과를 출력하려고 하는데... 박기범 1292 2002/11/25
1630     Re: STL을 이용하여 for를 안 쓰고 하는 방법! 김백일 1240 2002/11/26
1629     Re:함수를 이용하여 for문 결과를 출력하려고 하는데... 이영우 1352 2002/11/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.