首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >什么?一个for也能实现二维矩阵?

什么?一个for也能实现二维矩阵?

作者头像
用户9831583
发布2022-06-16 15:20:42
发布2022-06-16 15:20:42
4010
举报
文章被收录于专栏:码出名企路码出名企路

有时候,一些编程技巧可以帮我们提高工程效率,在面试中也可以使面试官耳目一新:

牛逼!统计单词个数原来还可以如此简洁

牛逼!再也不用长长的Switch语句了

牛逼!一行代码居然能解决这么多曾经困扰我半天的算法题

今天,聊聊二维矩阵的常见操作。

二维矩阵常规操作:

代码语言:javascript
复制
void PrintTwoFor(int (&data)[3][4])
{
    for(int i=0;i<col;i++)
    {
        for(int j=0;j<row;j++)
        {
            cout<<data[i][j];
        }
        cout<<endl;
    }
}

一拍脑袋想着能不能用一个for实现:

代码语言:javascript
复制
void PrintOneFor(int (&data)[3][4])
{
    for(int i=0;i<12;i++)
    {
        //全部除以列
        cout<<data[i/4][i%4];

        if(i%4==3)
            cout<<endl;
    }
}

实际测试:

代码语言:javascript
复制
int main()
{
    int data[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
    cout<<"两个for实现:"<<endl;
    PrintTwoFor(data);

    cout<<"一个for实现: "<<endl;
    PrintOneFor(data);
}

测试结果:

应用在Qt开发案例中:

代码语言:javascript
复制
for(int i=0;i<20;i++)
    {
        myPushButton *menuBtn=new myPushButton(":/res/LevelIcon.png");
        menuBtn->setParent(this);
        menuBtn->move(25+i%4*70,130+i/4*70);

        //监听每个按钮的点击事件
        connect(menuBtn,&myPushButton::clicked,[=](){
            QString str=QString("点击了第 %1 关").arg(i+1);
            qDebug()<<str;

        });

       QLabel *label=new QLabel;
       label->setParent(this);
       label->setFixedSize(menuBtn->width(),menuBtn->height());
       label->setText(QString::number(i+1));
       label->move(25+i%4*70,130+i/4*70);

       //设置label上的文字对齐方式
       label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);

       //设置让鼠标进行穿透 51号属性
       label->setAttribute(Qt::WA_TransparentForMouseEvents);

    }

结果显示:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档