039 我自己的 ostream_iterator


#include 
#include 
#include 
using namespace std;

template 
void Copy(T1 s, T1 e, T2 x)
{
    for (; s != e; ++s, ++x)
        *x = *s;
}

template
class myostream_iteraotr
{
    // 在此处补充你的代码
public:
    string ss;
    ostream &os;
    //list::iteraotr ii;
    myostream_iteraotr(ostream & os_,const string & s_):ss(s_),os(os_) {}
    myostream_iteraotr& operator ++() { return *this; }
    myostream_iteraotr& operator *() { return *this; }
    myostream_iteraotr& operator =(const T& t)
    {
        os << t << ss;
        return *this;
    }

};

int main()
{
    const int SIZE = 5;
    int a[SIZE] = { 5,21,14,2,3 };
    double b[SIZE] = { 1.4, 5.56,3.2,98.3,3.3 };
    list lst(a, a + SIZE);
    myostream_iteraotr output(cout, ",");
    Copy(lst.begin(), lst.end(), output);
    cout << endl;
    myostream_iteraotr output2(cout, "--");
    Copy(b, b + SIZE, output2);
    return 0;
}