自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 Day 18 C++提高 之 STL常用容器(string、vector、deque)

中间的缓冲区都是满的,但是两边(开头和结尾的缓冲区)会有空,插入就直接插入,若多了,就再开一个缓冲区,用新的指针维护就是。对于支持随机访问的迭代器,都可以利用sort算法直接对其进行排序,vector容器也可以用sort进行排序;:不是在原空间之后接新的空间,而是重新开辟一块更大的空间,然后将原数据拷贝到新的空间,并释放原空间再进行相关操作。有5名选手,选手ABCDE,10个评委分别对每一名选手打分,去除最高分、最低分,取平均分为最终选手评分;vector容器,前端封闭,后端开放,在后端进行操作。

2025-12-23 10:41:08 883

原创 Day 17 C++t提高 之 STL初识

目标:Vector存放自定义数据类型,并打印输出public:int m_Age;Person p1("懒羊羊", 10);Person p2("喜羊羊", 13);Person p3("沸羊羊", 13);Person p4("美羊羊", 12);Person p5("暖羊羊", 13);//向容器中添加数据//遍历容器中的数据it!= v.end();it++)

2025-12-18 16:54:10 525

原创 Day17 C++提高 之 类模板案例

创建一个数组的类,类中需要有数组、数组的容量、数组当前元素个数;这个数组可以存储用户输入的数据类型的数据(数据类型包含系统内置以及用户自定义的数据类型),所以数组中的每一个元素的数据类型都是通用数据类型 T,将数据开放到堆区(用new,但new出来的一般都是指针,所以用T* =new T[n])。如果是编译器提供的拷贝构造(浅拷贝)以及编译器提供的operator=都会出现浅拷贝的问题,所以需要自己写深拷贝解决这个问题(当数据有在堆区的数据,一定要自己写拷贝构造函数和operator函数防止浅拷贝问题;

2025-12-17 15:39:00 285

原创 Day 16 C++提高之模板

主流的解决办法是第二种方式,将类模板成员函数的声明和实现写在一起,并将.h文件的后缀名改为.hpp,然后不需要源文件.cpp。C++编写时,通常把每个类单独写在一个文件中,.h文件中写类的声明以及成员函数的声明,然后再.CPP文件中写成员函数具体的实现。----- 表明其后面的符号是一种数据类型,可以用class代替,告诉编译器我的后面是一个通用的东西。:.h和.cpp文件的内容写在一个文件中,然后将.h文件后缀名改为.hpp文件,然后包含.hpp文件。----- 声明创建模板,告诉编译器要写模板了。

2025-12-16 17:26:12 339

原创 Day 16 C++之案例----基于多态的职工管理系统的构建

用户在批量创建时,可能会创建不同种类的职工,如果想将不同种类的员工都放入到一个数组中,因为一个数组中必须存放的是相同数据类型的数据,所以可以将所有员工的指针维护到一个数据里,如果在那个在程序中维护这个不定长的数据,可以将这个数组创建到堆区(指针),并利用Worker**的指针维护。先判断文件是否存在,若不存在,提醒用户,若存在,继续操作;判断职工是否存在,输入编号,按照编号查找,若不存在,提醒,若存在,将原来的职工删除,重新录入新的信息,将信息更新到维护的数组中,并保存到文件中。

2025-12-07 15:55:02 952

原创 Day 15 C++之文件操作

程序运行时产生的数据都属于临时数据,程序一旦运行结束就都会被释放,通过文件可以将数据持久化。参数解释:字符指针buffer指向内存种的一段存储康健,len是读写的字节数。注意:文件打开方式可以配合使用,利用 | 操作符。参数解释:字符指针buffer指向内存种的一段存储空间,len是读写的字节数。以二进制方式对文件进行读写操作,打开方式要添加一个ios::binary。二进制方式写文件主要利用流对象调用成员函数write。二进制方式读文件主要利用流对象调用成员函数read,函数原型。

2025-12-03 11:31:10 340

原创 Day 14 C++面向对象之多态

当子类重写了父类的虚函数,子类中的虚函数表内部会被替换成子类的虚函数地址(&Cat::speak),父类没有发生改变,还是原来的。有一些属性开设在子类的堆区了,所以需要释放,但防止释放不干净,所以需要写虚析构或纯虚析构去走子类的析构函数,使之释干净,若不写,就是只走父类的析构函数。若写执行函数时,函数内调用的是父类的同名函数,这个时候不管传的参数是那个子类的对象,最终调用输出的函数始终是父类的函数,若在父类的同名函数之前加关键字。则将此函数虚化,再调用时,传的是哪个对象就是调用哪个子类对象的函数。

2025-12-02 17:34:48 883

原创 Day 13 C++面向对象编程 之 继承

只要子类中出现和父类同名的成员函数,子类的同名成员函数会隐藏掉父类中所有同名成员函数(包括函数的重载),苏哦需要访问到父类的成员函数,就要加作用域来实现访问父类中的成员函数。父类与子类有相同名字的成员时,直接访问的是子类(自身)的,若要访问父类的成员,一定得加作用域,告诉编译器访问的是父类的那个成员,而不是子类的成员。子类中的成员,包含父类的成员以及自己增加的成员,从基类继承过来的是共性,自己新增的是个性。若子类出现和父类同名的静态成员函数,会隐藏父类所有的同名成员函数,若想要访问,就要加作用域。

2025-11-06 16:52:15 789

原创 Day 12 C++面向对象编程 之 运算符重载

运算符重载概念:对已有的运算符进行重新定义,再赋予其另一种新的功能,以适应不同的数据类型;对于内置的数据类型,编译器知道如何进行运算,但是编译器不知道自定义数据类型的数据的运算,比如一个类的两个对象的成员属性的运算,编译器就不知道怎么算;可以自己写一个函数进行运算操作,编译器就写了一些通用名称:实现两个自定义数据类型的相加运算:返回数据类型 operator+ (参数列表){运算操作}成员函数重载的本质调用:Person p3=p1.operator+(p2);全局函数重载的本质调用:Perso

2025-11-05 15:04:36 415

原创 Day 11 C++面向对象编程 之 对象模型+this指针+友元

在C++中,类内的成员变量和成员函数分开存储,只有非静态成员变量才属于类的对象上。C++编译器会给每个空对象分配一个字节的空间,是为了区分空对象占内存的位置,区分每一个空对象,每一个空对象也应该有一个独一无二的内存地址,进行区分。若对象中有一个成员变量int,则一个对象占4个字节。只有非静态成员变量属于类的对象上,其他(静态成员变量、非静态成员函数、静态成员函数)都是独一份的,不属于类的对象上。每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会公用一块代码。那么,这一块代码是如何区分是哪个

2025-11-04 15:54:18 770

原创 Day 10 C++面向对象编程 之 对象的初始化和清理

三种构造更推荐第一种括号法,直观明了。

2025-11-03 15:36:12 558

原创 Day 09 C++面向对象编程 之 封装

class 表示要设计一个类,类后面加类的名字,然后再在体内写属性 + 行为。保护权限和私有权限的区别,在继承中有所体现,继承需要二者有父子关系,其中若是保护权限,则子类可以继承,但是若是私有权限的内容,子类不可以继承。类中可以用另一个类做为这个类的成员变量;设计一个圆形类(circle),和一个点类(point),计算点和圆的关系(圆外、圆上、圆内)在类设计时,可以把属性和行为放在不同的权限下,加以控制。在设计类的时候,属性和行为写在一起,表现为事物。进行对象的行为,就是直接调用类中的行为函数。

2025-10-28 11:15:21 559

原创 Day 08 C++面向对象编程 之 内存+引用+函数(高级)

写一个引用时,就是说明写了一个指针指向它(a),而写的这个指针的一个指针常量,所以引用不可以更改,即指针指向不可以更改。引用时,const与没有const二者是也是函数重载,但是调用时,系统选择的是没有const的,选择可读可写的函数版本。但是加const之后可以。初始化后,就是它(a)的了,不可以对其进行改变,变成别人(c)的是三心二意是不行的。内存四区的意义:不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程。于指针常量而言,本身是一个常量,指针的常量,指针主要的是指向,所以指针常量。

2025-10-27 17:09:04 553

原创 Day 07 C++入门 之实践例子-----通讯录管理系统的设计与构建

对每一个功能设置对饮的索引,输入索引时就进入对应的功能进行操作,结束后按任意键回到初始界面(相当于手机的首页),然后可以继续进行下一个功能的使用。根据用户不同的选择,进入不同的功能,可以选择Switch分支结构进行搭建,用户选择0时,执行退出操作。所有的访问都是通过size的ret进行访问的,所以将size=0,逻辑清空即可。打开VS,创建新项目,添加文件,右键源文件,添加新建项。封装函数显示该界面,在main函数中调用封装好的函数。在main函数中写好基本的框架。创建新项目,添加文件。

2025-10-22 11:26:27 418

原创 Day 06 C++入门 之 结构体

struct 结构体名 {结构体成员列表}// 创建一个学生的数据类型(结构体类型)int num;// 成员1-学号// 成员2-姓名;int age;// 成员3-年龄int score;// 成员4-成绩。

2025-10-21 11:24:11 430

原创 Day 05 C++ 入门 之 指针

数据类型 * 变量名;int a = 7;// 定义一个指针int* p;// 让指针记录变量a的地址p = &a;// 建立关系cout << "a的地址为:" << &a <<endl;cout << "a的地址为:" << p <<endl;// 二者输出的值相同p指向变量a所存在的空间。

2025-10-20 17:21:23 289

原创 Day 04 C++入门之 数组 + 函数

数组,就是一个集合里面存放了相同类型的数据元素。数组中每个数据元素都是相同的数据类型;数组存放于连续的内存位置。数组从0开始进行索引,叫下标,可以通过下标访问数组中的元素。比如 a[0],访问数组a中的第一个元素。数据类型 数组名[数组长度];int A[5];//申明并写出数组中元素个数A[0] = 7;// 数组下标从0开始索引A[1] = 6;A[2] = 5;A[3] = 3;A[4] = 1;// 访问第一个数组元素**数据类型 数组名[数组长度] = {值1, 值2…};

2025-10-20 11:25:59 954

原创 Day 14 geant4入门-------补充

一般来说只需要修改一些部分(主要是前三个部分),比如建模层面的反应模型改变、发射粒子的改变、反应的改变、收集信息的改变…若对源代码进行了修改,就要在 build 文件夹下进行重新编译 make,然后 make install。有建模的材料们所决定,各物理反应模型由 G4 已经写好,可以使用也可以自己写 physics list。当自己要用这个东西的时候,就去找,看其他实例中怎么用的,自己就怎么用,进行模仿。B1是很基础的,若需要修改,在这个基础上就可以进行修改、添加即可。判断粒子是初级粒子还是次级粒子。

2025-10-19 10:43:07 330

原创 Day 13 root 相关说明--以 ANAEX01 为实例

于单线程而言,先跑一个 run ,run 内部有很多个 event,去循环每一个event(一个粒子一个event,n 个粒子 n 个 event),每个 event 有一个 eventAction,有一个 beginOfEventAction 和 endOfEventAction,然后,有runAction。

2025-10-18 17:30:01 938

原创 Day 12-----EventAction + RunAction 解析+ UI command 设置-----以B2a为实例

定义:User interface command。在进行模拟时,有输入文件:.mac文件,.mac文件是由一条一条命令组成。**目的:**能够去自定义自己的UI command。其中命令有些有参数,有些没有;斜线+词+参数…G4UIcommandWithoutParameter 无参数:/run/initializeG4UIcommandWithAString 接一个string的字符串 :/gun/particle mu-

2025-10-16 09:51:50 874

原创 Day 03 C++程序流程结构

C/C++中支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构。

2025-10-13 20:35:39 717

原创 Day 11 TrackerSD解析---如何定义sensitive detector-----以B2a为实例

Day 11 TrackerSD解析—如何定义sensitive detector-----以B2a为实例。

2025-10-13 16:16:41 515

原创 Day 02 运算符

两个整数相除,结果依然是整数,将小数部分去除,两个小数不可以做取模运算,取模运算必须得有整数。两个小数相除,运算的结果也可以是小数。其中++、–包含前置与后置。

2025-10-11 17:32:59 339

原创 Day 01----C++初识以及数据类型

C++规定在定义变量或常量时,都必须为其指定变量类型,否则无法为其分配内存空间(因为不同数据类型占据内存空间不同)作用:用于显示单个字符,只占用一个字节,在内存中存储对应的ASCII码,单引号内只可写一个字符。打开软件visual studio,选择创建新项目,选择C++,选择空项目,进行创建。输出时显示效果相同,都是整数,若赋值超出取值范围,则从头开始重新数即为输出值。作用:C++规定给标识符(变量、常量)命名时,有一套自己的规则,与C类似。作用:表示小数,单精度float,双精度double。

2025-10-11 16:40:46 782

原创 Day 10 DetectorConstruction + TrackerHit解析---如何初始化sensitive detector----以B2a为例

根据我们自己需要统计的物理信息自己写一个Hit。对于B2a而言,自定义了一个类B2TrackerHit继承的是G4VHit,其中一个Hit包含了四个信息:​ 每一个例子的TrackerID,初始例子的trackerID为1,父母ID为0,若在过程中生成了次级粒子,则trackerID顺序增加,然后parentID就是上级粒子的trackerIDthe total energy deposit in this step - 每一个step的能量沉积。

2025-10-11 15:56:22 873

原创 Day 09(下) B2a实例解说----exampleB2a.cc+ActionInitialization+PrimaryGeneratorAction

拿到实例怎么样运行(没有类似于cline的软件):首先打开程序所在的文件夹,新建文件夹,进入新文件夹,在终端打开,再cmake。G4单位定义上是一个数值,所以设置时的单位都是带上的用*连接,其中。该程序中的所有Action类需要在此中进行初始化。

2025-10-09 17:02:22 345

原创 Day 09(上) B2a实例分析-----如何理解Sensitive detector 和 Hit

大致可以看以下文件,通常都会继承G4已有的类,然后在此基础上写自己的方法代码ReadMe:对该程序的解说,包含程序有什么、程序的模型是什么样的、怎么去发射、模型怎么样变化、程序运用了哪些东西(方法)、每个文件是什么用,写了什么…ExampleB2a.cc(主程序)TrackerSDTrackerHitDetectorMessenger:改代码时,不需要去重新编译RunActionG4UserLimits:需要对每一个step设置一个最大步长(平均自由长),但只针对于chamber,不针对靶物质。

2025-10-09 16:58:32 873

原创 Day 07 Physics list-----以B1为例

physics:物理反应的集合,属于这一类反应的所有的物理过程(electromagnetic、hadronic、decay、photolepton-hadron、optical、parameterization、transportation);G4提供了很多physics list,源代码的source中的physics_list中的lists的src中有G4提供的physics list。physics list一般自己写,更符合自己的项目,写的时候可以参考QBBC。

2025-09-19 17:05:49 169

原创 Day 06 动作类的初始化类------以B1为例

该类是一个抽象类,用来实例化所有的动作类的。在顺序执行下,Build()会被G4RunManager调用;多线程模式下,Build()会被G4WorkerRunManager调用,BuildForMaster()会被G4MTRunManager调用。若继承G4VUserActionInitialization类,就要重写这两个虚函数。Build()多线程和顺序模式都会被调用来初始化动作类,BuildForMaster()只会在多线程被调用取初始化动作类。

2025-09-18 22:23:05 424

原创 Day 05 Geant4多线程 Multithreading --------以B1为例

对于其中的一个组(线程)来说,就会变成上面的顺序执行,且对于每个线程来讲,有该线程自己的RunAction.fEdep。在当前event结束后将eventAction的fEdep加和给runAction的fEdep,这就得到了当前粒子的能量沉积。中的fEdep是在每个event结束后,每一个step都会把能量沉积加和给runAction中的fEdep;中把每一个event结束后,把每一个event的fEdep给runAction的fEdep。**fEdep:**用于在不同层级上统计能量进行加和,其中,

2025-09-18 21:13:08 394

原创 Day 04 G4如何统计能量沉积-------以B1为实例

在世界中进行发射粒子源,从接触靶物体开始反应到出射靶物体,中间发生的各步反应(物理过程)叫做step,这中间发生的各个反应的物理过程(即每一个step)的模拟是G4自己内部完成的(不需要我们);若要统计能量沉积,就可以借助这个函数,因为他会在每一个step走后被调用,可以在这个里面写相关函数,统计各个粒子的各个step的能量沉积,最终加和即可。若要统计能量沉积,每一个粒子的每一个step都有可能由能量沉积,将每个粒子的每个step的沉积能量进行加起来总和就能进行统计。小tips:打印信息。

2025-09-15 17:19:23 433

原创 Day 03 设置粒子枪 G4ParticleGun -----以B1为实例

的。

2025-09-14 21:24:50 335

原创 Day 02 geant4如何构建几何模型以及材料填充-------以B1为实例

G4IsotopeG4Element​ **有两种方法:**1.把定义好的材料直接放在Construct()方法里面;(每次都自定义新的指针,在材料处写指针名字,每次都得修改,都要重新编译)2.自己写一个DefineMaterial()方法,然后把所有可能用到的材料都定义在这个方法里面,可以参考TestEm0--------Geant4官方教程文档(官网可以直接下载)自定义:先知道密度并给出;

2025-09-13 22:40:24 997

原创 Day01 Geant4学习

​ 用来记录粒子在每个step中的信息的,例如位置,能量,动量.例如,假设每一个粒子都有一个属于自己的id,会记录自己的轨迹状态信息就是track,当他发生反应时,就会产生新的id。​ 最终在新建的build文件夹中的vis.mac文件中设置,是自带的,如果有更高的需求可以自己去更改,但是一般都是写好的,设置好了图形界面的一些东西,呈现的自己建模的图形界面多大,需不需要网格什么的。从反应到结束的过程,其中也包括它产生的刺激粒子的反应到结束的过程,成为一个事件event。

2025-09-12 22:34:39 783

原创 Day03 matlab函数

function[输出形参表:output1,output2…]=函数名(输入形参表:input1,input2…)注释说明部分函数体代码部分end。

2025-08-24 21:13:21 711

原创 Day02(下) matlab基础

元素写在[]中,其中同行元素用空格或逗号分隔,行与行之间用分号或回车键分隔;若一行之间存在某种逐渐增加的关系,可以使用步长,(初始值:步长:终值)步长为1时可以省略。

2025-08-23 22:42:22 878

原创 Day02 matlab基础程序结构

本文介绍了MATLAB基础程序结构的三大逻辑结构(顺序、循环、分支)及绘图功能。逻辑结构部分详细说明了for/while循环、if/switch分支语句的语法格式。绘图部分涵盖二维/三维图形绘制、图形属性设置(颜色、线型、标记)、图形窗口分割以及图形导出方法,并提供了完整的绘图示例代码。文章特别强调了MATLAB与Python/C等语言在语法上的差异,并给出了使用帮助文档的建议。

2025-08-23 20:58:07 1055

原创 matlab界面认识

1.可以选择打开文件夹![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/2023072402.也可以在显示文件夹路径的地方输入想要打开文件夹的路径清除命令行窗口之前的代码:clc清除当前工作区环境变量:clear all。

2025-08-22 21:53:16 923

原创 Day07 面向对象编程oop(下)

修饰方法就是抽象方法、修饰类就是抽象类实际工作中,遇到的情况不一定都是非常完美的,会出现各种错误,异常。如用户输入不一定符合我们的要求;程序想要打开某个文件,但是这个文件不存在或者格式不对;想要读取数据库中的数据,数据可能为空;程序正在运行,内存或硬盘可能满了---Exception---->发生在程序运行期间,干扰了正常的程序运行流程分类:1.检查时异常2.运行时异常3.错误Error小马喽在线学习!

2025-04-17 16:34:17 659

原创 Day06 java面向对象编程oop(上)

即同一种方法可以根据发送对象不同而采用多种不同的行为方式。一个对象的实际类型是确定的,但是可以指向对象的引用类型可以有很多种(主要是说父类可以指向子类)简单来说,就是在创建对象时,前面类可以为父类的名字,后面的类为子类,创建出来的类的类型就不同。//一个对象的实际类型是确定的,new Student();//但是可以指向对象的引用类型是不确定的,即前面的变量类型和变量名//子类能调用的方法都是自己的或者继承父类的//Person是父类,可以指向子类,但是不能调用子类独有的方法。

2025-04-16 21:43:05 1831

Day02 matlab程序结构学习示例代码

Day02 matlab程序结构学习示例代码

2025-08-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除