C++编程填空:正向与反向输出

描述

输入一个的序列,首先输出原序列,每个元素之间以"---"分开

再将序列的每个元素翻倍,并逆序输出原序列,每个元素之间以"***"分开。
#include <cstring>
#include <cstdlib>
#include <string>
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
class C1{
// 在此处补充你的代码
};

int main()
{
    vector<int> v;
    int p;
    int size;
    int k;
    cin >> k;
    while(k--){
        cin >> size;
        v.clear();
        for(int i = 0; i < size; ++i){
            cin >> p;
            v.push_back(p);
        }
        C1 o1 = C1(size,v);
        ostream_iterator<int> it(cout,"---");
        copy(*o1, (*o1)+size, it);
        cout<<endl;
        for(int i = 0; i < size; ++i){
            o1[i]*=2;
            cout<<o1[i]<<"***";
        }
        cout<<endl;
    }

}
输入
第一行是测试数据组数k。
对于每组测试数据,先输入
测试数据共有k组,每组首先输入序列长度n,接下来n个整数分别代表序列的n个数。
输出
对于每组测试数据输出两行,分别是以"---"分割的原序列,和以"***"分割的翻倍后的逆序序列。

样例输入

1
10
1 2 3 4 5 6 7 8 9 10

样例输出

1---2---3---4---5---6---7---8---9---10---
20***18***16***14***12***10***8***6***4***2***

http://cxsjsx.openjudge.cn/2018midexamcloze/6/

// Q759046.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"


#include <cstring>
#include <cstdlib>
#include <string>
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
class C1{
// 在此处补充你的代码
public:
    C1(int size, vector<int> v)
    {
        _size = size;
        _v = v;
        _re = 1;
    }

    int & operator[](int i)
    {
        return _v[i];
    }

    const int* operator * ()
    {
        if (_re)
        {
            std::reverse(_v.begin(), _v.end()); 
            _re = 0;
        }
        return &_v[0];
    }

private:
    int _re;
    int _size;
    vector<int> _v;
};

int main()
{
    vector<int> v;
    int p;
    int size;
    int k;
    cin >> k;
    while(k--){
        cin >> size;
        v.clear();
        for(int i = 0; i < size; ++i){
            cin >> p;
            v.push_back(p);
        }
        C1 o1 = C1(size,v);
        ostream_iterator<int> it(cout,"---");
        copy(*o1, (*o1)+size, it);
        cout<<endl;
        for(int i = 0; i < size; ++i){
            o1[i]*=2;
            cout<<o1[i]<<"***";
        }
        cout<<endl;
    }

}