00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00027 #ifndef __PRINT_SEQ_H_
00028 #define __PRINT_SEQ_H_
00029
00030 #include <iostream>
00031 #include <vector>
00032 #include <list>
00033 #include <deque>
00034 #include <iterator>
00035
00036 namespace std {
00037
00038 template <class _Ve, class _A>
00039 std::ostream& std::operator<<(std::ostream& o, const std::vector<_Ve,_A>& a)
00040 {
00041 if(a.size() == 1)
00042 o << a[0];
00043 else if(!a.empty())
00044 {
00045 typename std::vector<_Ve,_A>::const_iterator e(a.end());
00046 std::copy(a.begin(), --e, std::ostream_iterator<_Ve>(o, ", "));
00047 o << *e;
00048 }
00049 return o;
00050 }
00051
00052 template <class _Ve, class _A>
00053 std::ostream& std::operator<<(std::ostream& o, const std::list<_Ve,_A>& a)
00054 {
00055 if(a.size() == 1)
00056 o << a[0];
00057 else if(!a.empty())
00058 {
00059 typename std::list<_Ve,_A>::const_iterator e(a.end());
00060 std::copy(a.begin(), --e, std::ostream_iterator<_Ve>(o, ", "));
00061 o << *e;
00062 }
00063 return o;
00064 }
00065
00066 template <class _Ve, class _A>
00067 std::ostream& std::operator<<(std::ostream& o, const std::deque<_Ve,_A>& a)
00068 {
00069 if(a.size() == 1)
00070 o << a[0];
00071 else if(!a.empty())
00072 {
00073 typename std::deque<_Ve,_A>::const_iterator e(a.end());
00074 std::copy(a.begin(), --e, std::ostream_iterator<_Ve>(o, ", "));
00075 o << *e;
00076 }
00077 return o;
00078 }
00079
00080 }
00081
00082 #endif