템플릿을 활용한 삽질 2

  • Neon
    Neon

    디버깅을 하다가 귀찮아져서 그만 흑흑...
    vector를 화면에다 출력하려고 할 때 사용하는 함수입니다. cout << tmp << endl; 하면 tmp 안의 내용물이 화면에 출력되는 것이죠.
    copy(tmp.begin(),tmp.end(),ostream_iterator<...>(cout," ")); 같은 것보다 좀 더 간편하게 쓸 수 있어서 좋습니다.
    template T1& operator<<(T1 &a, const vector &b)
    {
    for(int i=0;i return a << endl;
    }
    활용예제 :
    cout << vector >(5,vector(5,-1)) << endl;

    [이 글은 과거 홈페이지에서 이전된 글입니다. 원문보기]

    14년 전
7개의 댓글이 있습니다.
  • hyunhwan
    hyunhwan

    우왕 머시써여.


    14년 전 link
  • JongMan
    JongMan

    템플릿 인자를 한 개로 하고 ostream& 을 써도 됩니다. ^^


    14년 전 link
  • Taeyoon_Lee
    Taeyoon_Lee

    탑코더에서 정말 유용할 것 같아요 :) 잘 쓰겠습니다.. ㅋㅋ
    근데.. for(int i=0;i<b;i++) 이 아니고, for(int i=0;i<(int)b.size();i++) 가 아닐까요'-'?


    14년 전 link
  • lewha0
    lewha0

    vector에 대한 < 연산자가 < .size() 로 재정의 되어있기 때문이죠.. 이것도 어디 찾아보면 글 나올텐데 -ㅁ-;
    찾아보니 http://algospot.com/zbxe/?document_srl=63249&mid=freeboard&comment_srl=63771


    14년 전 link
  • Azurespace
    Azurespace

    좋은 방법이라고는 할 수 없겠네요. 의도되지 않은 버그를 발생시킬 공산이 있으니까요.


    14년 전 link
  • Azurespace
    Azurespace

    template
    stream_t &operator <<(stream_t &stm, const container_t &cont){
    container_t::const_iterator i;
    for(i = cont.cbegin(); i != cont.cend(); ++i){
    stm << (*i) << " ";
    }
    return stm;
    }
    vector 뿐 아니라 list, set 등에 대해서도 사용할 수 있습니다.


    14년 전 link
  • Neon
    Neon

    return하게 전에 endl을 한번 찍어주면 2차원 container 조합에 대해서도 유용하게 쓸 수 있습니다.(약간 보기는 안좋아지긴 함)


    14년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.