数据类操持_图片类操持_矩阵图范例和像素图范例操持的增补

[复制链接]
发表于 2025-10-9 20:03:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
前言

        以矩阵图范例和像素图范例作为图像类数据的根本,但在利用过程中有个标题:矩阵图形和像素图形的尺寸---长和高没有表现出来,本贴对此做出分析.
引入

        原帖数据类操持_图片类操持之7_矩阵图形类操持更新_实战之页面简单操持(前端架构)-CSDN博客里有对矩阵图形类的界说如下:
  1. //更新后的矩阵类定义
  2. struct Matrix : public Reg_pic {
  3.     short length;                             //表示长度的点个数
  4.     short height;                             //表示高度的点个数
  5.     short red;
  6.     short green;
  7.     short blue;
  8.     vector<vector<Reg_point>> matrix;         //图,点的二维数组
  9.     vector<Matrix> inner_matrix;              //更新时添加的属性,表示内部矩阵
  10.     Matrix(short Length, short Height, short Red,
  11.         short Green, short Blue)              //构造函数
  12.     {
  13.         vector<Reg_point> tmp;                //临时容器
  14.         for (short i = 0; i < height; i++)
  15.             for (short j = 0; j < length; j++)
  16.             {
  17.                 tmp.push_back(Reg_point{ Red,Green,Blue });
  18.             }
  19.         matrix.push_back(tmp);                //临时容器内容添加到矩阵对象
  20.     }
  21. };
复制代码
而点的范例界说在数据类操持_图片类操持之1_矩阵类操持(前端架构根本)-CSDN博客
  1. //规则点类
  2. struct Reg_point{
  3.     short red;
  4.     short green;
  5.     short blue;
  6. }
复制代码
像素图和像素点界说如下:
  1. //自由图形类(像素图)定义
  2. struct Pixel_pic{
  3.     vector<Pixel_point> pps;    //像素点集合
  4. }
  5. //像素点类型定义
  6. struct Pixel_point{
  7.     short x_cord;
  8.     short y_cord;
  9.     short red;
  10.     short green;
  11.     short blue;
  12. }
复制代码
复习数据的泉源与访问

        数据的泉源

        "数据=数据范例+参数"----通常环境下数据分三步得来:界说数据范例,给出参数,得到数据.
        数据的访问

         数据的访问有两种情势:
        1.数据名大概指向数据对象的指针;
        2.数据聚集与查找算法---当把数据用某种数据布局放入数据集适时,由指向数据聚集首元素的指针和界说的查找算法来访问数据
矩阵类图形范例分析

        1.矩阵类对象的构造函数,符合数据泉源的写法.   

  1. //矩阵类构造函数
  2. Matrix(short Length, short Height, short Red,short Green, short Blue)    
复制代码
        他表现创建一个长Length,宽Height,颜色分别为Red,Green,Blue的纯色矩阵对象.
        这种环境下,Length和Height是核心属性,他们直接决定了数据对象的构成.也可以看作是一种"主动"的属性.
         2.矩阵类对象由vector动态天生.

        由于Matrix对象是由二维数组的点所构成,在背面的矩阵混淆算法中,都是接纳push_back()添加进对象的,以是此时的长和高,接纳vector方法求出来.这是一种被动天生数据的写法.
        于是可以给三个函数,分别为showSize();getLength()和getHeight();表现盘算尺寸,得到长度和高度.
  1. //更新后的矩阵类定义
  2. struct Matrix : public Reg_pic {
  3.     short length;                             //表示长度的点个数
  4.     short height;                             //表示高度的点个数
  5.     short red;
  6.     short green;
  7.     short blue;
  8.     vector<vector<Reg_point>> matrix;         //图,点的二维数组
  9.     vector<Matrix> inner_matrix;              //更新时添加的属性,表示内部矩阵
  10.     Matrix(short Length, short Height, short Red,
  11.         short Green, short Blue)              //构造函数
  12.     {
  13.         vector<Reg_point> tmp;                //临时容器
  14.         for (short i = 0; i < height; i++)
  15.             for (short j = 0; j < length; j++)
  16.             {
  17.                 tmp.push_back(Reg_point{ Red,Green,Blue });
  18.             }
  19.         matrix.push_back(tmp);                //临时容器内容添加到矩阵对象
  20.     }
  21.     //以下至末尾为新添加代码
  22.     void showSize(){                          //计算尺寸
  23.         height=matrix.size();                 //计算高度
  24.         auto mxd=matrix.begin();              //得到指向矩阵第一行的指针
  25.         length=(*mxd).size();                 //取得这一行,得到其长度
  26.     }
  27.     short getLength(){                        //get长度
  28.         return length;
  29.     }
  30.     short getHeight(){                        //get高度
  31.         return height;
  32.     }
  33.                               
  34. };
复制代码
        注意:被动天生数据的时间,核心属性是vector<vector<Reg_point>> matrix; 
 像素图形类分析

        和矩阵数据类对象的第二种环境类似,他也是一种被动天生的数据. 
  1. //自由图形类(像素图)定义
  2. struct Pixel_pic{
  3.     vector<Pixel_point> pps;    //像素点集合
  4.     //以下为新增代码
  5.     short getLength(){          //获得长度,最大x坐标
  6.         short max=0;
  7.         for(auto ppsd=pps.begin();ppsd!=pps.end();ppsd++){
  8.             if(max<(*ppsd).x_cord){
  9.                 max=(*ppsd).x_cord;
  10.             }
  11.         }
  12.     return max;
  13.     }
  14.     short getHeight(){          //获得高度,最大y坐标
  15.         short max=0;
  16.         for(auto ppsd=pps.begin();ppsd!=pps.end();ppsd++){
  17.             if(max<(*ppsd).y_cord){
  18.                 max=(*ppsd).y_cord;
  19.             }
  20.         }
  21.     return max;
  22.     }
  23. }
复制代码
         getLength()和getHeight();表现得到长度和高度
        至此两种图形范例长和高的标题办理了.如果其他代码中必要用到这两个属性,可以表达出来.笔者就不更新之前的代码了.
回顾 

        实质上是对vector这种数据布局的熟悉,在C/C++界说的动态数组中,表现数据聚集内元素个数的数字,也是一种被动的存在. 
小结

        除了上一帖引入了核心属性,这里由于vector的特殊性子,又引入了被动属性这个概念.
        别的,编程重在明白(明白的重点照旧数据---数据是步调中的重中之重),只要有富足的明白,代码不管是横着写竖着写,正着写反着写,都能写得出来,共勉.
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表