首页 > 其他分享 >每日总结25

每日总结25

时间:2023-11-03 23:55:57浏览次数:31  
标签:总结 25 vector const cout int 每日 len Vector

软件设计                  石家庄铁道大学信息学院

 

实验6:原型模式

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

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

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

 

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

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

实验要求:

1. 画出对应的类图;

 

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

浅克隆

#include <iostream>

using namespace std;

//向量类

class Vector{

private:

    int *p;

    int len;

public:

    Vector(int len);

    Vector(const Vector &vector);  //拷贝构造函数

    ~Vector();

    int operator[](int i) const { return p[i]; }

    int &operator[](int i){ return p[i]; }

    int length() const { return len; }

};

Vector::Vector(int len): len(len){

    p = (int*)calloc( len, sizeof(int) );

}

//拷贝构造函数

Vector::Vector(const Vector &vector){

    this->len = vector.len;

    this->p = vector.p;

}

Vector::~Vector(){ free(p); }

//打印

void display(const Vector &vector){

    int len = vector.length();

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

        if(i == len-1){

            cout<<vector[i]<<endl;

        }else{

            cout<<vector[i]<<", ";

        }

    }

}

int main(){

    Vector v1(10);

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

        v1[i] = i;

    }

    Vector v2 = v1;

    v2[6] = 55;

    v2[2] = 20;

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

    cout<<"更改copyVector后vector的数据:"<<endl;

    display(v1);

    cout<<"更改copyVector后copyVector的数据:"<<endl;

    display(v2);

    return 0;

}

深克隆

#include <iostream>

using namespace std;

//向量类

class Vector{

private:

    int *p;

    int len;

public:

    Vector(int len);

    Vector(const Vector &vector);  //拷贝构造函数

    ~Vector();

    int operator[](int i) const { return p[i]; }

    int &operator[](int i){ return p[i]; }

    int length() const { return len; }

};

Vector::Vector(int len): len(len){

    p = (int*)calloc( len, sizeof(int) );

}

//拷贝构造函数

Vector::Vector(const Vector &vector){

    this->len = vector.len;

    this->p =  (int*)calloc( this->len, sizeof(int) );

    memcpy( this->p, vector.p, len * sizeof(int) );

}

Vector::~Vector(){ free(p); }

//打印

void display(const Vector &vector){

    int len = vector.length();

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

        if(i == len-1){

            cout<<vector[i]<<endl;

        }else{

            cout<<vector[i]<<", ";

        }

    }

}

int main(){

    Vector v1(10);

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

        v1[i] = i;

    }

    Vector v2 = v1;

    v2[6] = 55;

    v2[2] = 20;

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

    cout<<"更改copyVector后vector的数据:"<<endl;

    display(v1);

    cout<<"更改copyVector后copyVector的数据:"<<endl;

    display(v2);

    return 0;

}

 

3.注意编程规范。

标签:总结,25,vector,const,cout,int,每日,len,Vector
From: https://www.cnblogs.com/mine-my/p/17808756.html

相关文章

  • 每日总结24
    软件设计                 石家庄铁道大学信息学院 实验7:单例模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解单例模式的动机,掌握该模式的结构;2、能够利用单列模式解决实际问题。 [实验任务一]:学号的单一仿照课堂的身份证的例子,......
  • 每日博客
    实验6:原型模式、实验7:单例模式 ......
  • 2023-2024-1 20231424《计算机基础与程序设计》第6周学习总结
    2023-2024-120231424《计算机基础与程序设计》第6周学习总结作业信息作业属于的课程<班级链接>(2022-2023-1-计算机基础与程序设计)作业要求<作业要求链接>(2022-2023-1计算机基础与程序设计第一周作业)这个作业的目标《计算机科学概论》第7章和《C语言程序设计》......
  • 2023-2024-1 20231404高伟光《计算机基础与程序设计》第六周学习总结
    作业信息这个作业属于哪个课程2314班计算机作业要求2023-2024-1计算机基础与程序设计第6周作业作业目标自学教材计算机科学概论第7章《C语言程序设计》第5章作业正文此博客教材学习内容总结较详细的介绍了伪代码,解决问题的基本步骤。用伪代码讲述了搜索......
  • 每日总结20231103
    代码时间(包括上课)5h代码量(行):100行博客数量(篇):1篇相关事项:1、今天是周五,本身是期中测试的,但是软考的考试马上就要来了,所以期中考试延迟了。2、今天一天都在看软考,但是在软考之来之前我的结业考试比他还早,我这会儿要开始背相关知识了。3、今天晚会儿还打算看看软件设计师相关的......
  • 2023.11.3——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.软考知识明日计划:学习......
  • 第10周linux课堂总结
        这周的linux课程我们学习了进程管理,首先我们学习的是查看进程,查看进程分为静态查看进程和动态查看进程,ps命令可以查看静态进程,仅仅是捕捉某一个瞬间某一个进程的状态,类似于给进程制作快照,使用“psaux”命令可以查看当前目录的进程,查询出来的进程状态表中每一列的含义......
  • 大数据学习每日总结-第一天
    第十四天学习大数据Hadoop:Hadoop是一个大数据框架,用于对大数据进行分布式计算。Hadoop核心1、hdfs大数据存储2、yarn:资源管理和任务调度3、mapreduce:大数据计算词频统计初体验今天把整个大数据学习的环境搭建了一遍,耗了不少时间,其实昨天就弄了一天,但是出错了,可恶,所以昨天......
  • 【django开发】知识经验总结共50页md文档。今日分享:django项目搭建
    Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(DoNotRepeatYourself)原......
  • Linux 文件目录配置及命令总结
    前言在Linux中,一切皆文件,而每一个文件和目录都是从根目录开始的Linux文件目录的作用/bin目录:用来存放二进制可执行命令的目录,用户常用的命令都存在该目录下。/sbin目录:用来存放二进制可执行文件,这里面的命令只供系统管理员,管理系统使用(root用户)。/dev目录:设备文件存放的......