题解

1 条题解

  • 0
    @ 2020-08-10 23:11:56

    为了方便查看,这里放出了完整的代码,用到了一些的 C++ 技巧。

    #include <iostream>
    #include <cstdio>
    #include "vector.h"
    using namespace std;
    using namespace dsa;
    
    typedef long long Num;
    typedef unsigned long long Unum;
    typedef long double Lfloat;
    #define Rint register int
    #define Os ostream
    
    template<typename T>/*T: integer type*/
    void read(T& num)
    {
        char ch;int f;num=0;while(1){ch=getchar();if(ch=='-' || (ch>='0'&&ch<='9')) break;} (ch=='-')?(f=-1):(f=1,num+=ch-'0');while(1){ch=getchar();if(!(ch=='-' || (ch>='0'&&ch<='9'))) break; num*=10;num+=ch-'0';} num*=f;
    }
    
    namespace dsa
    {
        void printLots (Os& os,Vector<int> l,Vector<int> p)//Os& os 是一个输出流的引用
        {
            for(auto x:p)//范围 for 循环,相当于
            //for(Vector<int>::iterator it=p.begin();it!=p.end();it++){x=*it;...}
            //auto 是类型推导,使用 auto 可以避免写一大长串 Vector<int>::iterator
            {
                os<<l[x-1]<<" ";//这里用法和平时用 cout 是一样的
            }
        }
    }
    
    int main()
    {
        Vector<int> l,p;
        p.push_back(1);p.push_back(3);p.push_back(4);p.push_back(6);
        for(int i=1;i<=6;i++)
        {
            l.push_back(i);
        }
        printLots(cout,l,p);
        return 0;
    }
    

    注意其中的 vector.h 是按照此书之前的讲解编写的封装的数组,并定义在了命名空间 dsa 下。你也可以直接把 Vector<int> 换成 STL 的 vector<int>,具体方法不再多说。

  • 1

信息

ID
1113
难度
2
分类
(无)
标签
递交数
0
已通过
0
通过率
?
被复制
1
上传者