类模板

来源:互联网 发布:南京录音棚淘宝 编辑:程序博客网 时间:2024/06/06 09:30

1.写一个 CMyostream_iterator 模板, 使之能和 ostream_iterator 模板达到一样的效果

#include <iostream>#include <string>#include <vector>using namespace std;// 在此处补充你的代码template<class T>class CMyostream_iterator:public iterator<output_iterator_tag,T>{private:    ostream &o;    const char* s;public:    CMyostream_iterator(ostream & output,const char* sz):o(output),s(sz){}    void operator++(){};    void operator=(const T& val){o<<val<<s;}    CMyostream_iterator &operator*(){return *this;}};int main(){    int a[]={1,2,3,4,5};    CMyostream_iterator<int> output(cout,"*");    vector<int> v(a,a+5);    copy(v.begin(),v.end(),output);    return 0;}

执行效果:


2.写一个CMyistream_iterator 模板,使之能和 istream_iterator 模板达到一样的效果

template <class T>class CMyistream_iterator:public iterator<input_iterator_tag,T>{private:    T a;    istream &is;public:    CMyistream_iterator(istream &iss):is(iss){is>>a;}    void operator++(int)    {        is>>a;    }    T operator*(){return a;}};

测试代码:

int main(){    CMyistream_iterator<int> inputInt(cin);    int n1,n2,n3;    n1 = * inputInt; //读入 n1    int tmp = * inputInt;    cout << tmp << endl;    inputInt ++;    n2 = * inputInt; //读入 n2    inputInt ++;    n3 = * inputInt; //读入 n3    cout << n1 << "," << n2<< "," << n3 << endl;    CMyistream_iterator<string> inputStr(cin);    string s1,s2;    s1 = * inputStr;    inputStr ++;    s2 = * inputStr;    cout << s1 << "," << s2 << endl;    return 0;}
测试结果:




来自北京大学MOOC课件

0 0
原创粉丝点击