螺旋矩阵&C++封装性

 螺旋矩阵

int d[4][2] = {{0,1},{1,0},{0,-1},{-1,0}};//方向数组 规定行走方向顺序 右下左上循环
class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        int n = matrix.size();
        int m = matrix[0].size();//规定范围
        vector<vector<int>> vis(n,vector<int>(m,0));
        vector<int> ans(m*n);//严格规定答案数组大小,避免push_back()重新分配内存的开销
        int curx = 0,cury = -1;//当前位置
        int x=0;//方向数组基准数
        for(int i=0;i<m*n;)
        {
            curx += d[x%4][0];
            cury += d[x%4][1];//新位置
            if(cury>=m||cury<0||curx>=n||curx<0||vis[curx][cury])
            {
                curx-=d[x%4][0];//如果越界或者走到了走过的位置就返回上一个位置并且转向
                cury-=d[x%4][1];
                x++;
                continue;
            }

            ans[i] = matrix[curx][cury];//更新答案
            vis[curx][cury] = 1;//走过了就标记
            i++;//如果合理就计数+1;
        }
        return ans;
    }
};

什么是封装性?C++中如何实现封装? 

        封装性是面向对象编程(OOP)中的一个基本概念,它指的是将数据(属性)和操作数据的方法(函数)捆绑在一起,并限制外部对数据的直接访问,从而实现数据隐藏访问控制。通过封装,可以确保对象的内部状态不会被随意修改,从而提高了代码的安全性和可维护性。

封装的核心思想有两个:

  • 数据隐藏:将对象的状态(数据)封装起来,外部只能通过公开的接口(方法)来访问和修改数据。
  • 暴露行为:通过公开的接口方法控制外界如何与对象交互,而不暴露对象的内部实现细节。

 C++中如何实现封装? 

        在C++中,封装通过使用 类(Class) 来实现。类可以包含私有成员(属性和方法)以及公有成员(接口方法)。

  • 类的定义:在类中使用访问控制关键字 public, private, 和 protected 来控制成员的可访问性。

    • public:公有成员,外部可以访问。
    • private:私有成员,外部无法直接访问,通常用于存储对象的内部状态。
    • protected:受保护成员,子类可以访问,但外部不能直接访问。

实现封装的步骤

  1. 将数据成员设置为 private,外部无法直接修改。
  2. 提供 public 成员函数作为接口来访问和修改这些私有数据成员。

封装性的好处是什么?

  1. 保护数据
  2. 提高代码可维护性
  3. 降低系统复杂度(不用直接操作未知意义的数据和与其配合的成员)
  4. 提高代码的安全性和健壮性
  5. 支持代码的重用和拓展(继承基类,重写函数)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值