同一方式输出多个数组的逆天写法
  • 板块灌水区
  • 楼主adpitacor
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/2/25 16:31
  • 上次更新2023/10/23 23:48:56
查看原帖
同一方式输出多个数组的逆天写法
374733
adpitacor楼主2023/2/25 16:31

以下是定义:

int n,m;
struct arr_T{
    int az[NM_];
    void init(int v){
        memset(az,v,sizeof(az));
    }
    int* operator [] (const int &idx){
        return az+idx*(n+2);
    }
}a,prmx,prmn,sfmx,sfmn;

这个结构体大概就是一个总大小固定但两维长度可变的数组类型。

我要以同样的方式输出 prmxprmnsfmxsfmn 四个数组,显然复制粘贴两层循环十分难看,我又一时没想到可以写函数,于是我想到了这个逆天写法:

for(auto &pr:
std::vector<
    std::pair<arr_T,const char*>
>{
    {prmx,"prmx"},{prmn,"prmn"},
    {sfmx,"sfmx"},{sfmn,"sfmn"}
}){
    printf("%s:\n",pr.second);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            printf("%d ",pr.first[i][j]);
        }
        putchar('\n');
    }
}

就是不知道那四个“数组”会不会被复制……

2023/2/25 16:31
加载中...