디버깅을 하다가 귀찮아져서 그만 흑흑...
vector를 화면에다 출력하려고 할 때 사용하는 함수입니다. cout << tmp << endl; 하면 tmp 안의 내용물이 화면에 출력되는 것이죠.
copy(tmp.begin(),tmp.end(),ostream_iterator<...>(cout," ")); 같은 것보다 좀 더 간편하게 쓸 수 있어서 좋습니다.
template<typename T1,typename T2> T1& operator<<(T1 &a, const vector<T2> &b)
{
for(int i=0;i<b;i++) a << b[i] << " ";
return a << endl;
}
활용예제 :
cout << vector<vector<int> >(5,vector<int>(5,-1)) << endl;
탑코더에서 정말 유용할 것 같아요 :) 잘 쓰겠습니다.. ㅋㅋ
근데.. for(int i=0;i<b;i++) 이 아니고, for(int i=0;i<(int)b.size();i++) 가 아닐까요'-'?
vector에 대한 < 연산자가 < .size() 로 재정의 되어있기 때문이죠.. 이것도 어디 찾아보면 글 나올텐데 -ㅁ-;
찾아보니 http://algospot.com/zbxe/?document_srl=63249&mid=freeboard&comment_srl=63771
template<typename stream_t, typename container_t>
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 등에 대해서도 사용할 수 있습니다.

