Category: 学习笔记
在现代 C++(C++11 及以后)中,一个非常强大的特性叫做 转发引用(forward references),它让开发者可以通过一个模板函数同时处理左值和右值——而且只需写一次函数模板声明。 虽然语法看起来有点复杂,但本质上,转发引用是一种非常优雅的语法机制,让代码既简洁又高效。 什么是转发引用? 当模板参数以 T&& 的形式出现在函数参数中,并且 T 是通过类型推导得到的,这种情况下就形成了一个 转发引用。例如: template<typename T> void func(T&& arg); 乍一看,这像是右值引用,但实际上是 转发引用,因为 T 是通过类型推导得出的。这个函数既能接受左值,也能接受右值: int x = 5; func(x); // 左值 …
关注行动与坚持: – 从三分钟热度到每日10页:我重新开始读书了 – 读书打卡第2天:一点一滴的改变 – 告别买书如山、读书如风的日子 🧠 强调“读书健脑”与复利思维: – 读书是给大脑的长期投资 – 每天10页书,给大脑加点料 – 坚持,是最好的认知训练 🧘 结合生活习惯与自律: – 我的自律打卡清单里,多了一项:读书 – 从冥想到阅读,每天进步1% – 习惯改变人生,读书也能很极简 我已经记不清上一次完整读完一本书是什么时候了。每次都是三分钟热度,读一会儿就放下了。说实话,阅读从来不是我的爱好。有时候在旅途中,比如坐火车时,才会随手拿本书“象征性”地翻翻,多数时候也只是拍拍照装(逼)作在读书。 这几年我还买了不少实体书,但大多只是翻了几页就被搁置在一边,最后落满灰尘。前几天我看着家里塞满的一整书柜,突然觉得这样实在太浪费了。 刚好那天不知道在哪里看到一句话,说读书是最好的健脑方式之一。每天坚持阅读10页书籍,能显著提升专注力、理解力和思考力。 于是我给自己定下计划:每天读10页书。不局限于技术类书籍,甚至会刻意避免技术类内容,因为它们有时候反而更枯燥、读起来更容易疲惫。 目前我每天坚持打卡不少活动:比如倒立、量体重、喝牛奶、高抬腿、开合跳、深蹲、冥想三分钟、刷题等等。坚持的一个小技巧就是把这些写进Excel表格,每天自己勾选打卡,一目了然。 要相信复利的力量:一天两天看不出什么效果,但长期坚持,一定会发生变化。 …
C++ 中的 dynamic_cast 是什么? 用途 在运行时在多态类型之间安全地进行转换 通常用于将基类指针转换为派生类指针(向下转型) 使用 RTTI(运行时类型识别)进行类型检查 基本语法 Derived* d = dynamic_cast<Derived*>(basePtr); 如果 basePtr 实际指向一个 Derived 对象,则转换成功 否则,返回 nullptr 转换失败的情况 指针转换: 如果实际对象不是目标类型,则返回 nullptr 引用转换: 如果失败,会抛出 std::bad_cast 异常 …
停机问题:程序能预测自己吗? 问题:给定程序 P 和输入 x,你能判断 P(x) 是否会停机,还是永远运行下去吗? 由阿兰·图灵于 1936 年提出 被证明为不可判定——不存在通用算法能解决所有情况 本质是自指问题:程序能分析另一个程序(甚至是自己)吗? 图灵的思想实验 假设:H(P, x) 判断 P(x) 是否停机 定义下面的Python函数: def D(P): if H(P, P): while True: pass # 无限循环 …
使用 Bash 脚本计算最大公约数(GCD) 什么是 GCD? GCD 是 最大公约数(Greatest Common Divisor) 的缩写。 它是能同时整除两个整数的最大正整数。 例如: 8 和 12 的 GCD 是 4 14 和 49 的 GCD 是 7 GCD 常用于化简分数、密码算法以及数论中。 …
理解 Linux Shell 中前导空格的行为 概述 在像 bash 这样的 Linux shell 环境中,命令前加一个空格可能会影响该命令是否被保存到命令历史中。 这个小技巧在处理敏感数据时非常有用,或者当你不希望某个命令被记录下来时也能派上用场。 关键变量:HISTCONTROL 这种行为是由一个叫做 HISTCONTROL 的 shell 环境变量控制的。 查看当前设置的方法如下: echo $HISTCONTROL 例如,你可能会看到: ignoredups:ignorespace 值的含义解释 选项 描述 ignoredups 防止连续重复的命令被保存到历史中。 ignorespace …
什么是 C 中的 restrict? restrict 是 C99 引入的指针类型限定符。它告诉编译器,该指针在其生命周期内是访问其所指内存的唯一方式。 这使得编译器可以安全地进行优化,因为它可以假设没有指针别名 —— 即没有其他指针访问相同的内存。 语法示例: void copy(int *restrict dst, const int *restrict src, size_t n); 优点: 启用更激进的编译器优化 提升在循环和内存密集型操作中的性能 明确表达开发者对指针用途的意图 没有使用 restrict 时: …