OneCoder

【信奥业余科普】C++ 的奇妙之旅 | 20:更安全的间接访问——引用的设计动机与实战对比

上一篇文章中,我们深入理解了指针的设计原理——通过存储内存地址,实现函数间的高效数据共享。但我们也看到了指针的另一面:需要手动使用 * 和 & 进行解引用和取址操作,代码中符号密集,容易出错,可读性也会下降。 C++ 的设计者 Bjarne Stroustrup 在设计 C++ 时,为了在保留指针底层能力的同时提供一种更简洁、更安全的替代方案,引入了引用(Reference)。本文...

【信奥业余科普】C++ 的奇妙之旅 | 19:内存的门牌号——地址与指针的设计原理

在上一篇文章中,我们介绍了函数可以作为独立的黑盒处理数据,但这带来了一个棘手的物理限制:当我们把变量传递给函数时,系统默认执行的是“按值传递(Pass by Value)”。这意味着,如果传递的是一个体积巨大的数组,系统要在极短时间内完成全量的物理数据拷贝,不仅效率极低,更极其容易突破栈内存的容量上限,导致程序崩溃(栈溢出)。 为了不复制庞大的数据原件,又能让处于隔离状态的函数内部精准访问...

【CSP】CSP-J 2021真题 | 插入排序 luogu-P7910 (适合GESP四-六级及以上考生练习)

CSP-J 2021真题-插入排序,模拟与排序考点,重点考察对插入排序稳定性的理解以及增量更新排名的优化能力,适合GESP四-六级及以上考生练习,难度⭐⭐⭐,洛谷难度等级普及/提高−。 P7910 [CSP-J 2021] 插入排序 题目要求 题目描述 插入排序是一种非常常见且简单的排序算法。小 Z 是一名大一的新生,今天 H 老师刚刚在上课的时候讲了插入排序算法。 假设比较两...

【信奥业余科普】C++ 的奇妙之旅 | 18:代码的积木与黑盒——函数的底层逻辑与基础语法

在此前的旅程中,我们顺着程序的生命流水线,从存储单个数据(变量)一路走到了成规模的信息容纳仓库(数组),并使用判断与循环给程序注入了逻辑能力。 理论上,你完全可以把所有的代码统统塞进 main() 主程序里。但当代码量达到数千行时,这种做法会暴露出极其直接的致命缺点: 代码极难维护且难以复用:各种计算任务糅杂在一起,想顺着逻辑排查 Bug 如同大海捞针。遇到相同逻辑时只能反复复制粘...

【信奥业余科普】C++ 的奇妙之旅 | 17:面的铺展与文本的本质——二维数组与字符串

在上一篇文章中,我们见识了“一维数组”。通过在物理内存中开辟一块连续的直线空间,结合底层的“首地址+偏移量”设计,一维数组将成批的散乱数据变得井井有条,成为了配合循环结构批量处理数据的绝佳工具。 可是,现实世界的数据并不总是像糖葫芦那样排成单独的一条直线。当我们需要记录一张划分了横纵行列的 Excel 电子表格、一张纵横交错的围棋棋盘,或者是一长串人类阅读的文字时,一条直挺挺的线形空间该如...

【CSP】CSP-J 2021真题 | 分糖果 luogu-P7909 (适合GESP三级及以上考生练习)

CSP-J 2021真题-分糖果,数学规律考点,重点考察对于整除和取余运算性质的理解和规律挖掘能力,适合GESP三级及以上考生练习,难度⭐☆,洛谷难度等级普及−。 P7909 [CSP-J 2021] 分糖果 题目要求 题目背景 红太阳幼儿园的小朋友们开始分糖果啦! 题目描述 红太阳幼儿园有 $n$ 个小朋友,你是其中之一。保证 $n \ge 2$。 有一天你在幼儿园的后花...

【信奥业余科普】C++ 的奇妙之旅 | 16:批量处理数据的基石——数组的设计哲学

在上一篇文章中,我们了解了循环结构。它能够让计算机往复执行相同的指令,极大地节省了代码所占用的内存空间。 但循环只能重复执行“动作”。如果我们要用一段循环指令去验证千万条不同的数据,就会面临一个明显的阻碍:名称各异的独立变量,无法配合循环被机器自动挨个读取。这就引出了我们今天要探讨的话题:数组(Array)。 本系列文章往期回顾: 第一部分【计算机历史】系列文章合集(共8篇)...

【CSP】CSP-J 2020真题 | 优秀的拆分 luogu-P7071 (适合GESP二、三级及以上考生练习)

CSP-J 2020第一题-优秀的拆分,重点考察整数的二进制位拆分思想,适合GESP二、三级及以上的考生从多种思路下手练习,难度⭐☆,洛谷难度等级入门−。 P7071 [CSP-J 2020] 优秀的拆分 题目要求 题目描述 一般来说,一个正整数可以拆分成若干个正整数的和。 例如,$1=1$,$10=1+2+3+4$ 等。对于正整数 $n$ 的一种特定拆分,我们称它为...

【CSP】CSP-J 2020真题 | 直播获奖 luogu-P7072 (适合GESP四级及以上考生练习)

CSP-J 2020真题-直播获奖,桶排序(计数排序)考点,重点考察对于动态数据集合的快速查询和时间复杂度优化能力,适合GESP四级及以上考生练习,难度⭐⭐☆,洛谷难度等级普及−。 P7072 [CSP-J 2020] 直播获奖 题目要求 题目描述 NOI2130 即将举行。为了增加观赏性,CCF 决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的获奖率为 $w...