首页 > 其他分享 >11.2

11.2

时间:2024-11-02 21:43:13浏览次数:2  
标签:克隆 int 11.2 Vector data 向量 size

实验6:原型模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解原型模式的动机,掌握该模式的结构;

2、能够利用原型模式解决实际问题。

 

[实验任务一]:向量的原型

用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。

实验要求:

1. 画出对应的类图;

 

2. 提交源代码(用C++完成);

#include <iostream>

 

class Vector {

private:

    int* data; // 指向向量数据的指针

    int size; // 向量的长度

 

public:

    // 构造函数

    Vector(int size) {

        this->size = size;

        data = new int[size];

    }

 

    // 析构函数

    ~Vector() {

        delete[] data;

    }

 

    // 获取向量长度

    int getSize() {

        return size;

    }

 

    // 获取指定位置的元素

    int getElement(int index) {

        return data[index];

    }

 

    // 设置指定位置的元素

    void setElement(int index, int value) {

        data[index] = value;

    }

 

    // 浅克隆

    Vector shallowClone() {

        Vector clone(size);

        clone.data = data;

        return clone;

    }

 

    // 深克隆

    Vector deepClone() {

        Vector clone(size);

        for (int i = 0; i < size; i++) {

            clone.data[i] = data[i];

        }

        return clone;

    }

};

 

int main() {

    // 创建一个长度为5的向量

    Vector v(5);

 

    // 设置向量元素的值

    for (int i = 0; i < v.getSize(); i++) {

        v.setElement(i, i + 1);

    }

 

    // 浅克隆

    Vector shallowCopy = v.shallowClone();

 

    // 修改原始向量的第一个元素

    v.setElement(0, 10);

 

    // 输出浅克隆后的向量

    std::cout << "浅克隆: ";

    for (int i = 0; i < shallowCopy.getSize(); i++) {

        std::cout << shallowCopy.getElement(i) << " ";

    }

    std::cout << std::endl;

 

    // 深克隆

    Vector deepCopy = v.deepClone();

 

    // 修改原始向量的第一个元素

    v.setElement(0, 20);

 

    // 输出深克隆后的向量

    std::cout << "深克隆: ";

    for (int i = 0; i < deepCopy.getSize(); i++) {

        std::cout << deepCopy.getElement(i) << " ";

    }

    std::cout << std::endl;

 

    return 0;

}

 

3.注意编程规范。

标签:克隆,int,11.2,Vector,data,向量,size
From: https://www.cnblogs.com/0608lin/p/18522512

相关文章

  • 11.2
     #include<cmath>#include<iostream>usingnamespacestd; classVector{private:    double*array=newdouble[4];    doublelength;public:    Vector(doublearr[4])    {        this->array[0]=arr[0];        this->a......
  • 24.11.2
    (填空题)软件复用的优点有()、()、()、()。(1)提高生产率(2)减少维护代价(3)提高互操作性(4)支持快速原型2. (填空题)依据复用的对象,软件复用分为()和()。(1)产品复用(2)过程复用3. (填空题)最常用的可复用设计是()和()。(1)架构模式(2)设计模式4. (填空题)框架方法包括:()......
  • VectorDraw Developer Framework 11.2.1
    VectorDrawDeveloperFramework(VDF)suiteisacombinationofcomponentsdesignedtocovertheneedsofyourapplication.It'smaincomponentisagraphicsengine-librarythatcanbeusedfromdevelopersinordertovisualizetheirapplications.With......
  • 闲话 11.2
    也是打上搜了。小木棍曾经在题库上做过,数据水就过了,交洛谷发现只有87pts。《剪枝盛宴》钦定长度:最小肯定是最长的那根木棍,最长肯定是所有木棍的总和,并且这个长度一定只能是总和的因数。选择顺序:如果选一个长的合法,那么选若干个和相同的短的一定合法但不优,因此按长度倒......
  • 11.2 炼石模拟赛
    T1贪心即可。T2考虑贪心。观察1不能出玩偶的机子应该最后修。所有钦定不出玩偶的机子都是平凡的,就是假在这里了!观察2所有人一起修机是最优的。观察3对于所有钦定出玩偶的机子,应该按照\(b\)数组从小到大排序后修理。有以上的观察,不难发现应该按照\(b\)数组排序。......
  • 第十一章 【后端】商品分类管理微服务(11.2)——Lombok
    11.2Lombok官网:https://projectlombok.org/较新版本的idea已默认安装lombok插件Lombok工具提供一系列的注解,使用这些注解可以不用定义getter、setter、equals、constructor等,可以消除java代码的臃肿,编译时它会在字节码文件中自动生成这些通用的方法,简化开发人......
  • 11.2.0.4 RAC,手动方式安装PSU补丁
    1、前言注意:Oracle不建议客户使用手动方式进行补丁安装,客户应该使用opatchauto方式进行补丁安装工作。但是,在opatchauto的过程中如果出现问题,我们可以将本文档中的步骤作为临时解决方法。 2、故障描述客户有一套Exadata环境下的11.2.0.4RAC,近期进行安全扫描时,提示一些数据......
  • 11.2 C语言文件的读写操作
    11.2C语言文件的读写操作11.2文件的读写操作11.2文件的读写操作文件的读写是文件处理中的核心操作,C语言提供了多种函数来实现从文件读取数据和向文件写入数据。文件的写操作写字符:fputc(c,fp);//将字符c写入文件写字符串:fputs(str,fp);//将字符......
  • AnolisOS 7.9 静默安装Oacle 11.2.0.4
    目录环境准备安装包下载上传安装包创建组和用户创建目录及设置权限编辑用户环境变量编辑资源限制修改内核参数编辑/etc/pam.d/login文件安装依赖包关闭防火墙selinux安装数据库软件准备db_install.rsp响应文件运行runInstaller进行安装创建监听创建数据库准备dbca.rsp响应文件创建......
  • 被苹果11.2警告的解决方案
    11.2警告邮件内容HelloXXX,We'rewritingtoinformyouthatyourcompanyisn'tincompliancewiththeAppleDeveloperProgramLicenseAgreement(DPLA).Section11.2(Termination)states:(g)ifYouengage,orencourageotherstoengage,inanymis......