首页 > 其他分享 >实验6:原型模式

实验6:原型模式

时间:2023-11-29 21:46:49浏览次数:34  
标签:int clone 模式 Vector 实验 原型 data 向量 size

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

3.注意编程规范。

#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;

}

 

 

标签:int,clone,模式,Vector,实验,原型,data,向量,size
From: https://www.cnblogs.com/lin513/p/17865956.html

相关文章

  • 实验7:单例模式
     本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解单例模式的动机,掌握该模式的结构;2、能够利用单列模式解决实际问题。 [实验任务一]:学号的单一仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。实验要求:1. 画出对应的类图;2.提交源代码;3.注......
  • 实验8:适配器模式
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解适配器模式的动机,掌握该模式的结构;2、能够利用适配器模式解决实际问题。 [实验任务一]:双向适配器实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。实验要求:1. 画出对应的类图;2.提交源代码;3.注意编......
  • 实验9:桥接模式
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解桥接模式的动机,掌握该模式的结构;2、能够利用桥接模式解决实际问题。 [实验任务一]:两个维度的桥接模式用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。#include<iostream>......
  • 实验4
    Textcoder.hpp#include<iostream>#include<string>usingnamespacestd;classTextcoder{public:Textcoder(stringt);stringget_ciphertext();stringget_deciphertext();private:stringtext;voidencoder();voiddeco......
  • 实验10:组合模式
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解组合模式的动机,掌握该模式的结构;2、能够利用组合模式解决实际问题。 [实验任务一]:组合模式用透明组合模式实现教材中的“文件夹浏览”这个例子。1.文件的执行不需真正实现,只需简单提示即可;2.提交源代码;3.......
  • 实验5
    实验任务1.1实验任务1.2实验任务2.1实验任务2.2实验任务3实验任务4.1 实验任务4.2 实验任务5.1实验任务5.2 实验任务6  实验任务7 ......
  • FPGA 实现SPI 主机双工通信 CS前后肩可调 操作时钟频率可调 ,SPI模式可调,传输位宽可
    1//testbench2`timescale1ns/1ns3modulelcd_spi_m_tb();4regrst_n_i;5regspi_clkx_i;6reg[31:0]spi_data_i;7regspi_start;8regspi_miso_r1,spi_miso_r2;9wirespi_miso_i;10wire[0:0]spi_done;11wir......
  • 实验八第二部分所需要的依赖
    <repositories><repository><id>alimaven</id><name>aliyunmaven</name><url>https://maven.aliyun.com/nexus/content/groups/public/</url></repository>......
  • 大型数据库实验八--Flink初级编程实践
    ......
  • 虚拟机进行实验八遇到的坑(一)
    idea依赖下载报错//引入阿里云镜像下载就ok啦~~~<repositories><repository><id>alimaven</id><name>aliyunmaven</name><url>https://maven.aliyun.com/nexus/content/groups/public/</url......