松雅旅馆的自动门——湖南大学程序设计作业

2025电赛嵌入式:K210教程-如何刷固件 如何烧录代码 全网唯一 本文介绍了K210开发板的固件刷写和开发环境搭建方法。主要内容包括:1)从Sipeed官网下载合适的MaixPy固件,根据需求选择完整版或精简版;2)使用k-flash等工具烧录固件,注意区分亚博和Sipeed开发板的固件版本;3)介绍了擦除闪存的两种模式(部分擦除和完全擦除)及其应用场景;4)搭建CanMV开发环境,通过MaixPy IDE连接开发板并进行程序调试。文章还提供了常见问题的解决方法,如串口驱动安装、固件兼容性检查等,为K210开发提供了完整的入门指南。 阅读详情

前言

最近我们20级新生开始做第三轮设计作业了,我发现这次的作业设计的很不错,挺有趣的。所以我在这里给大家分享一下我自己的做法,仅供参考。

问题回顾

松雅的旅馆门口有一个自动门,按照以下方式工作:

当门是关闭的时候,1或多个人来到门前,门将马上自动打开,所有人都能马上入内;

当门是打开的时候,1或多个人来到门前,所有人都能马上入内;

打开的门在打开后的 d 秒钟内立即关闭;

当门正在关闭时,1或多个人在同一时刻来到门前,所有人有足够时间入内,之后才会关闭

   例如,如果 d=3,有4人在4个不同时刻t1=4、t2=7、t3=9 和 t4=13 来到门前,门将会打开3次,即在时刻4、9和13打开,在时刻7和12关闭。

   已知有 n 个员工将在 a、2*a、3*a、...、n*a( a 是一个正整数)时刻进入,同时在 t1、t2、...、tm 时刻有 m 个客人进入。

   编程求出自动门打开的次数,假定开始时门是关闭的。

【输入形式】

   第一行4个正整数 n、m、a、d,分别表示员工数、客人数、第一个雇员进入的时刻、门打开后到关闭的时间长度。

   第二行包括一个正整数序列 t1、t2、...、tm,表示 m 个客人来到门前的时刻,这是一个非递减序列。

【输出形式】

   输出门打开的次数

【样例输入】

1 1 3 4
7
【样例输出】

1

个人分析

当我看到这个题的时候我头都大了,毕竟作为一个小白第一次看到这种题,我觉得现在甚至往以后,解题的方法是很重要的,做题前一定要先考虑方法,采取哪种方法才能解决问题。

这题有一点需要注意,就拿它的“例如”来看。
有4人在4个不同时刻t1=4、t2=7、t3=9 和 t4=13 来到门前,门将会打开3次,即在时刻4、9和13打开,在时刻7和12关闭。这就很厉害了,第2个人在第7秒的时候进来的,而第七秒门恰好关闭了。
我脑海中浮现了这样的画面。。。
在这里插入图片描述
第2位兄弟没事儿吧。。。

咳咳,谈正事儿。从这里我们可以知道,当门的关闭时间和人的进入时间重合的时候,门是刚好可以关上,开门次数就不会加1,这就牵扯到一个等号的问题。
在这里插入图片描述

方法

这题有两个时间线,一个是员工的,一个是客人的,两条时间线分开根本就不好算,所以我们只需要将两条时间线合并,并将其排序,问题即迎刃而解。这里恰好可以用到我上次介绍的两种排序。(感兴趣的朋友可以看一看两种常用排序)

具体操作

1.合并时间线

	int n,m,a,d;
	cin>>n>>m>>a>>d;
	int T[m+n];  //加起来共有m+n个元素
	//思路:将所有时间由小到大排成一列数组再解决问题 
	for(int i=0;i<n+m;i++){
	if(i<n){
		T[i]=(i+1)*a;
	}
	 else{
	 	int t;
	 	cin>>t;
	 	T[i] = t;
	 }
	}

无论先输入哪一个都可以,反正后面要排序的

2.排序

	void choose(int num[],int len) {
	for(int j = 0;j<len-1;j++){
		int k=j,f = num[j];
		for(int i = j+1;i<len;i++){
			if(num[j]>num[i]){
				if(num[i]<num[k]){
					k=i;
					
				}
			}
			
		}
		num[j] = num[k];
		num[k] = f;
	}
}

这里我直接将上次编的内容复制过来了,没有加备注(程序员最讨厌的两件事儿:1.写注释;2.别人不写注释。)

3.计数

	choose(T,m+n); //用数组名表示实参
	int count = 1;//只要有人,门就一定会开,我不相信测试数据里会有无人的情况
	int time = T[0]+d;//时间的初始值为第一个人进入的时间加关门的时间
	for(int i = 0;i<m+n;i++){
		if(time<T[i]){
			//只要关门时间小于时间T,count就加一 
			count++;
			time = T[i]+d;
		}
	}

总结

先考虑方法再做题往往比边做边想来得快,万一做到一半发现思路是错的便会重写,反正遇到这种情况我是比较难受的。
另外,我发现,多掌握一些基本方法对自己的编程帮助很大。比如,如果我没有掌握排序方法,那么我做这道题一定会非常困难,相应的,再过一段时间我再来回顾这道题,我很可能会有更好的方法来解决这道题。所以,嗯,学无止境,技多不压身嘛。

2025年华为杯D题:低空湍流监测及最优航路规划思路与Matlab实现 阅读详情

相关推荐

LT9211 单路mipi转双路mipi芯片,方案成熟,提供技术支持

LT9211 单路mipi转双路mipi芯片

TEL15012949045的博客 5026

松雅旅馆的自动门(C++练习题)

【问题描述】 松雅的旅馆门口有一个自动门,按照以下方式工作: 当门是关闭的时候,1或多个人来到门前,门将马上自动打开,所有人都能马上入内; 当门是打开的时候,1或多个人来到门前,所有人都能马上入内; 打开的门在打开后的 d 秒钟内立即关闭; 当门正在关闭时,1或多个人在同一时刻来到门前,所有人有足够时间入内,之后才会关闭 例如,如果 d=3,有4人在4个不同时刻t1=4、t2=7、t3=9 和 t...

LG.田猿的博客 1952

在Windows 11上用VirtualBox搞定WRF-Hydro 5.2.0:一个水文模型小白的Ubuntu 22.04虚拟机避坑实录

本文详细记录了在Windows 11上使用VirtualBox和Ubuntu 22.04虚拟机成功编译安装WRF-Hydro 5.2.0水文模型的全过程。从虚拟环境配置、依赖库安装到环境变量设置,作者分享了针对Linux新手的实用避坑技巧和关键命令,帮助科研人员高效完成水文模型的环境搭建。

weixin_30733003的博客 354

松雅的自动门

【问题描述】 松雅的旅馆门口有一个自动门,按照以下方式工作: 当门是关闭的时候,1或多个人来到门前,门将马上自动打开,所有人都能马上入内; 当门是打开的时候,1或多个人来到门前,所有人都能马上入内; 打开的门在打开后的 d 秒钟内立即关闭; 当门正在关闭时,1或多个人在同一时刻来到门前,所有人有足够时间入内,之后才会关闭 例如,如果 d=3,有4人在4个不同时刻t1=4、t2=7、...

squidsss的博客 1181

工业缺陷检测深度学习方法综述

异常:点异常、 上下文异常和集群异常。点异常:又称为离群值 (outliers)[9], 描述数值上偏离正 常样本的独立数据。与异常相近的概念还包括新颖点(novelty)和分布外数据。上下文异常:同样描述数据点,其数值属于正常范围,但不符合局部上下文规律。集群异常:描述一系列相关数据的集合,集合中的每一个实例的数值在单独考察时都处于正常值域,但集 合整体的相关性特征不服从正常模式。一般的图像异常检测往往仅需区分正常与异常样本,而工业缺陷检测更关注于检测 图像中的异常像素.

2301_80355452的博客 1844

Cadence 设计实践笔记-小哥allegro 2层板笔记

规范建立文件夹本章节主要跟着B站PCB入门首选视频-小哥Cadence Allegro 2层板视频,结合自己的实践一步步完成一个完整的PCB板的设计。规范建立文件夹建立八个文件夹我使用的Cadence 17.4 有些差异原理图绘制原图绘制首先要熟悉原理图工作原理工作原理下面是这个项目的原理图重点关注电源新建原理图库打开Cadence 软件创建项目新建工程 File ==========》Project我这里选择了Enable PSPice 试试能不能仿真,新建项目如下。

我的专栏 1481

松雅的自动门问题

松雅的旅馆门口有一个自动门,按照以下方式工作: 当门是关闭的时候,1或多个人来到门前,门将马上自动打开,所有人都能马上入内; 当门是打开的时候,1或多个人来到门前,所有人都能马上入内; 打开的门在打开后的 d 秒钟内立即关闭; 当门正在关闭时,1或多个人在同一时刻来到门前,所有人有足够时间入内,之后才会关闭 例如,如果 d=3,有4人在4个不同时刻t1=4、t2=7、t3=9 和 ...

JustinAustin的博客 1185

S7-1200 PN与G120变频器控制起停及调速PROFINET实现详解

S7-1200 PLC与G120变频器通过PROFINET通信可实现高效、实时的电机控制。2. 《S7-1200与G120 CU250S-2PN的PROFINET通讯指南》- 控制器:S7-1200 PLC (如1214C DC/DC/DC)- 变频器:G120 CU250S-2PN (带PROFINET接口)- 输出区(PZD1-2):控制字(16位)、速度设定值(16位)- 输入区(PZD1-2):状态字(16位)、实际速度值(16位)- P922=1:选择报文类型为"标准报文1 (PZD2/2)"

电工 1870

懒惰的松雅——湖南大学程序设计作业

前言 通过之前发的一篇博客,我结识了很多大佬。我自己心里面清楚,现在我写的东西对于很多大佬来说不过是小菜一碟,但是呢,我还是希望能够继续写下去,一来巩固我自己的知识,二来见证我的成长(每个人都是一步一步走上去的嘛),最后呢,也是最重要的,能够认识很多朋友,能够有更大的交流空间,我想,这是一个优秀的程序员所必要的条件。 问题回顾 现在转入正题,我们看到题目,又是松雅,看来小明没能上大学,我们的大学伙伴变成了松雅了。我们来看看题 *松雅喜欢睡懒觉(巧了,我也喜欢),有一天,她必须在 hh:mm 的时间起来去跟

CatCatchCap的博客 1583

TMC2240 芯片数据手册解读|第三篇 TMC2240 芯片引脚配置与说明

本文详细解析了TMC2240芯片的两款封装(TQFN32和TSSOP38-EP)的引脚分布、电气属性及硬件设计要点。内容涵盖:1)芯片内部功能架构,包括供电、运动控制等五大链路;2)两款封装的核心规范与适用场景;3)七大引脚分类详解(电源、控制、编码器等)及接线要求;4)PCB设计避坑指南,强调电源分割、电荷泵布局等关键点。文章提供完整的原理图绘制和硬件调试指导,适合不同基础的工程师参考实践。

BackCatK Chen的博客 1098

PyTorch生成式人工智能(25)——基于Transformer实现机器翻译

不同于循环神经网络 (RNN) 按顺序处理数据,Transformer 以并行的方式处理输入数据(例如句子)。这种并行处理提高了效率,但并未使其能够识别输入的顺序。为了解决这个问题,Transformer 向输入的词嵌入中添加了位置编码。这些位置编码是分配给输入序列中每个位置的独特向量,其维度与输入词嵌入对齐。本节将以英语到法语的翻译为例,通过介绍如何训练 Transformer 模型将英语句子转换为法语,深入理解 Transformer 的架构及自注意力机制的运作方式。

盼小辉丶的博客 2768

松雅旅店的自动门

** 松雅旅店的自动门 ** 【问题描述】 松雅的旅馆门口有一个自动门,按照以下方式工作: 1.当门是关闭的时候,1或多个人来到门前,门将马上自动打开,所有人都能马上入内; 2.当门是打开的时候,1或多个人来到门前,所有人都能马上入内; 打开的门在打开后的 d 秒钟内立即关闭; 3.当门正在关闭时,1或多个人在同一时刻来到门前,所有人有足够时间入内,之后才会关闭 例如,如果 d=3,有4人在4个不...

weixin_45671010的博客 970

【RT-DETR实战】117、华为昇腾CANN部署探索:从模型转换到推理踩坑实录

本文总结了RT-DETR模型在昇腾310B芯片上部署的关键挑战与解决方案。主要遇到四大问题:1)模型转换时需注意ONNX导出设置,建议先固定尺寸验证;2)内存布局差异导致推理异常,需精确匹配NHWC/NCHW格式;3)流水线并发优化中内存复用和异步处理是关键;4)调试阶段需利用专用工具逐层比对。作者提出六条实用建议,包括小尺寸验证、预处理对齐、内存池设计等,强调部署是持续适配过程,需建立完整的测试体系应对工具链迭代。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 193

松雅的旅馆

【问题描述】 松雅认为,拥有自己的旅馆是赚钱的最好方式,因为她可以在任何她想要的地方赚钱和休闲。 松雅生活的国度是一个无尽头的线状型,在这条直线的每个整数坐标上有一座城市。她有n个旅馆,第i个旅馆位于具有坐标xi的城市。松雅是位聪明的女孩,她不会在同一城市开设两家或多家旅馆。 松雅想拓展业务,因此,她决定开更多的旅馆。她想让新开的旅馆到所有其他旅馆的最短距离等于d,这个女孩知...

squidsss的博客 2563

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

松雅旅馆(实验三第二题)

题目代码区 #include //松雅旅店 #include using namespace std; int main(){ int n=0,m=0,a=0,d=0,door=0; cin>>n>>m>>a>>d; int arr[m]; for(int i=0;i<m;i++){ cin>>arr[i]; //输入客人进入的时间 } int time_max=0 ; time_max=max(arr[m-1],n

qq_51711403的博客 787

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

HNU 实验五松雅的旅馆

文章目录题目思路AC代码 题目 思路 暴力模拟吧。。注意在最左边的旅馆的左边以及最右边旅馆的右边也可以建立旅馆,即可以越过区间建立。这是数组类题目常有的问题。 AC代码 #include <bits/stdc++.h> using namespace std; int main() { int n, d; cin >> n >> d; int hotel[n + 1]; int min_ = INT_MAX, max_ = INT_MIN; for (int

qq_30747875的博客 969

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

松雅旅馆自动门

#include <iostream> //松雅旅店 #include <cmath> using namespace std; int main(){ int n=0,m=0,a=0,d=0,door=0; cin>>n>>m>>a>>d; int arr[m]; for(int i=0;i<m;i++){ cin>>arr[i]; //输入客人进入的时间 } int ti.

qq_51711403的博客 332

期末复习:松雅旅馆的自动门(STL)

学了STL回头把之前觉得难的一些题做一下,STL好方便我好快乐啊哈哈哈

qq_51630643的博客 418

深挖C++:类和对象(中)

(先进后出)

xys_678的博客 254

ThunderKittens 深度解析:一个不基于 MLIR 的 C++ 模板 GPU DSL

Triton 是"让更多人能写 GPU kernel",ThunderKittens 是"让会写的人写得更爽"。前者用 MLIR 换易用性,后者用 C++ 模板换可控性。它们不是替代关系,而是覆盖了 GPU 编程光谱的两端。ThunderKittens 的出现,本质上是对"GPU DSL 必须基于 MLIR"这一默认假设的挑战。编译期类型系统本身就可以是一个强大的 DSL 基础设施,不需要中间 IR,不需要黑盒 pass,也能实现 tile 级抽象和零运行时开销。

Maxwell_Newton的博客 349

C++移动构造函数详解

移动构造函数是C++11引入的一种特殊构造函数,用于从临时对象(右值)"窃取"资源来初始化新对象,而不是进行昂贵的深拷贝。char* data;public:// 移动构造函数:参数是右值引用 &&// 关键:把源对象的资源置空。

拒绝AI文,努力在AI时代写出感动人心的好文章 394

跟我学c++中级篇—类型定义的方式

本文系统阐述了编程中类型定义的重要性及c++中的实现方式。重点对比了宏定义、typedef与modern using三种机制,指出using在可读性、灵活性和模板支持上的优势,推荐优先使用。同时提醒开发者注意别名滥用、类型歧义、错误信息冗长等问题,强调统一规范与合理设计。最终结论:在现代c++开发中,应以using为主,兼顾简洁性与可维护性,避免陷入命名混乱与编译困境。

fpcc的专栏 88

【C++——类和对象(上)】筑基篇:以封装奠定面向对象之基

本文系统梳理C++类与对象的核心知识点,涵盖类的定义、访问限定符(public/private)、类作用域、对象实例化及内存布局。重点解析封装思想、this指针机制、空类大小为1字节的原因,以及类与对象在内存中的存储差异。通过对比C语言结构体与C++类,揭示面向对象设计的优势:数据保护、接口统一、命名隔离与代码可维护性提升。内容由浅入深,适合作为学习笔记与复习参考。

2602_95684935的博客 490

C++ 函数模版

模板参数:● template ,T 就是类型占位符,名字可以自定义,习惯用T● 占位符可以在函数返回值、形参、函数内部当作类型使用使用要点模板代码一般写在头文件:编译器需要看到完整模板源码,才能在每个编译单元完成实例化全局函数、类内成员函数都可以写成模板实例化发生在编译阶段,不是运行时隐式实例化:调用时编译器自动推导实参类型,生成对应版本函数。

2501_94041724的博客 307

C++ 运行时多态与虚函数机制全面剖析【面试重点】

构成C++ 运行时多态必须是基类的指针或者引用调用虚函数。被调用的函数必须是虚函数,并且派生类必须对该虚函数完成重写/覆盖(Override)。只有基类的指针或引用才能既指向基类对象,又指向派生类对象(切片机制);而只有完成了虚函数重写,派生类与基类才具备不同的函数行为,达到“指向谁就调用谁”的效果。在类成员函数的前面加上virtual关键字修饰,该成员函数就成为了虚函数。public:// 成员函数前加 virtual 修饰,声明为虚函数。

Fuyo_0209的博客 450
上一篇: 排序
下一篇: 懒惰的松雅——湖南大学程序设计作业
南懿烨曦
博客等级 码龄6年 108粉丝 35原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值