719 日 , 2025 0:01:59
你知道吗?

copilot 的 Edit 模式是真猛啊,几百行几百行生成单元测试用例(′▽`〃)

718 日 , 2025 0:01:30
716 日 , 2025 0:01:39
你知道吗?

std::string 自C++17起终于要求内存严格连续,因此提供了非const版本的data(),可以直接写入数据,简化了文本数据的定量读取。

715 日 , 2025 0:01:32
你知道吗?

tinyobjloader 关于模块接口文件 PR :“C++20 is not widely used as of 2025. I might merge the PR after 3~4 years later.”

ε=(´ο`*)))

714 日 , 2025 0:01:43
713 日 , 2025 0:01:35
你知道吗?

如果 const auto 推导出是指针类型,那么 const 修饰的是指针本身而非指针指向的对象。比如 int* ,推导出的结果是 int* const 而非 const int* 。同理,如果你将某种指针类型 T* 别名为 K ,则 const K 实际是 T* const 而非 const T* 。

712 日 , 2025 0:01:31
711 日 , 2025 0:01:08
你知道吗?

目前 Edge 浏览器的 PDF 查看功能存在严重 BUG,很多 PDF 会被显示为全白页面。这是Edge的一项实验性功能导致的,你可以在 Edge 的网址栏输入 `edge://flags/#edge-new-pdf-viewer` 前往实验功能面板,第一个就是 ` New PDF Viewer(#edge-new-pdf-viewer)` ,将其关闭并重启浏览器即可解决问题。

710 日 , 2025 0:01:16
你知道吗?

C++20的模块接口文件,编译为动态链接库时依然需要编译器相关的导出符号,比如MSVC的 __declspec(dllexport)

709 日 , 2025 0:01:35
你知道吗?

某些软件的缓存默认在C盘,而且根本不会清理。比如网易云音乐,刚刚一查发现它的缓存占了迷枵的C盘50GB。。。

708 日 , 2025 0:01:24
707 日 , 2025 0:01:35
706 日 , 2025 0:01:34
你知道吗?

Outlook的垃圾邮件检测机制极差,只要邮件有中文,基本就会被认为是垃圾邮件。重点的还没地方可以调整检查机制

705 日 , 2025 0:01:33
你知道吗?

手机QQ(安卓),动态页面上方的“游戏中心”终于可以不显示了,在“动态页面-更多-管理”中调整。以前强制显示游戏中心,还总是有无法关闭的红点。

704 日 , 2025 0:01:08
你知道吗?

即使你使用了C++20的模块化,你依然应该将声明与实现分离!!模块接口文件 .ixx/.cppm 要求顺序编译,如果你不分离声明与实现,一旦修改上层模块,就需要重新顺序地编译全部下层模块文件,极其耗时。注意  .cpp 文件可以轻松并行编译,如果模块接口仅含声明和少部分内联函数、将大部分实现代码放在 .cpp 文件,因为修改 .cpp 文件不会影响模块声明和文件,其他文件不需要重编译,更新项目耗时极短。如果你尝试使用标准库库模块(不需要编译标准库头文件),并分离模块接口文件与实现文件,将看到极快的编译速度。

703 日 , 2025 0:01:39
你知道吗?

Windows 11 的“快速启动”设置曾存在一些问题,可能占用超高内存,不知道现在是否修复。迷枵的笔记本32GB内存,曾因为它出现过开机占用即90%+的问题。

702 日 , 2025 0:01:47
你知道吗?

Minecraft 中的实体的碰撞箱并不会“转向”,永远是对齐坐标系的长方体。因此,即使是像“马”这样的对象,碰撞箱的长和宽也是相等的(防止马朝向不同时碰撞箱不同)。

701 日 , 2025 0:01:10
630 日 , 2025 0:01:58
你知道吗?

编程语言的 for 循环可以分为“基于范围”和“基于条件”,而某些现代语言只有范围 for (比如Py、Rust等)。这里依然以C++为例,for 循环最常被用于遍历数组对象,而范围 for 遍历数组的效率略高于条件 for (虽然差距较小)!!这是因为范围 for 基于数组子元素的指针,可以直接找到元素位置;而条件 for 通常使用索引访问数组元素,每次访问都需要根据索引进行寻址。

629 日 , 2025 0:01:02
你知道吗?

各类“前端”工具的设计思路是基本一致的,使用一种标记语言(HTML/XML/QML)描述(前台)界面,使用一种语言处理(后台)业务(JS/C#、Java、Kt/C++),然后使用事件(之类)的机制进行前后台的通信(Qt的signal与slot的本质也是如此)。标记语言很重要的一点是“组件化”,HTML本身并不支持自定义标签,这就是出现Vue等组件化框架的原因(之一)。

628 日 , 2025 0:01:16
你知道吗?

C++20的模块写起来确实很爽,但是不使用标准库时,只能将很多头文件放在全局模块片段。而模块本身依赖性导致不能完全并行编译(需拓扑排序),直接结果就是编译速度不升反降。

627 日 , 2025 0:01:59
你知道吗?

CLion会在编译时自动设置一些环境变量,然后就可能找错东西,比如 VCPKG_ROOT 指向 Visual Studio 自带的 vcpkg 路径,而不是手动安装设置的。

626 日 , 2025 0:01:01
你知道吗?

有一种奇怪的临时(较大)整数乘法:

using ull = unsigned long long;
ull bmul(ull a, ull b, ull m) {
    ull c = a * b - (ull)((long double)a / m * b + 0.5L) * m;
    if (c < m) return c;
    return c + m;
}
625 日 , 2025 0:01:18
你知道吗?

Windows 可以启用全局 UTF-8 默认编码,但是某些软件居然不支持,比如图吧工具箱就会乱码。

624 日 , 2025 0:01:39
你知道吗?

一个经典的表情包有什么重要特征?一定是某种特殊的“糊”。现在的表情包大概不会变绿,但还是可能因压缩变糊。仔细观察,特别是黑白的经典表情包(样例),可以看出波纹状的噪音,这被称为“振铃效应”,常因“理想低通滤波”产生。

623 日 , 2025 0:01:55
你知道吗?

Visual Studio 真是玄学,迷枵的win10台式机完全无法用 Visual Studio 运行 CMake 项目,但是用 VSCode 或 CLion 自动找到 MSVC 工具链并使用就一切正常,win11的笔记本也没有这个问题。

622 日 , 2025 0:01:50
你知道吗?

34分钟380MB和5分钟70MB的两个1080P(mp4)视频,直接前后拼接(使用clipchamp)合成1080P(mp4)新视频,会有多大?答案是11760MB。。。

621 日 , 2025 0:01:59
你知道吗?

WordPress默认开启/xmlrpc.php用于远程更新博客内容,有些人会利用此服务攻击博客。实际上你大概率用不到它(网页后台未使用此接口),可以使用Nginx拦截甚至301转发对此链接的访问。“不要惹我,不然我就把这些垃圾请求都转发到你的网站!(误)”

620 日 , 2025 0:01:57
619 日 , 2025 0:01:36
你知道吗?

一些语言用可以用 _ 接受弃用的值,而C++(11起)有个 std::ignore 变量能做到类似的事,它实现方式非常简单:

 struct _Ignore { // std::ignore 的类型
    template <class _Ty>
    constexpr const _Ignore& operator=(const _Ty&) const noexcept { // 能够接受任何类型的赋值运算符重载
        return *this; // 什么都不做
    }
};
618 日 , 2025 0:01:49
617 日 , 2025 0:01:16
你知道吗?

CS自学指南 是个很好的网站,正如其名“CS(计算机科学)”,理论内容居多。迷枵认为它缺少了一些更加“实践”的知识,比如非关系数据库、嵌入式与移动应用相关、测试相关、容器化集群,以及所有知识在实际应用中涉及的框架/程序。这才是完整的 CS&CT — 计算机科学与技术。

616 日 , 2025 0:01:03
615 日 , 2025 0:01:19
你知道吗?

C++26标准大体有如下内容:静态(编译期)反射、SIMD标准库、线性代数标准库、诊断调试库、契约(前置与后置断言)、更高级的多线程/并发支持。大概是因为并发库的巨大更新,标准网络库被推迟了(调整实现方式)。(希望C++29能够见到标准网络库,不然迷枵真要被迫转向Rust了。)

614 日 , 2025 0:01:35
你知道吗?

C++标准库的有序容器与算法使用<运算符,其他比较都由它实现,因此你的<定义必须满足严格弱序,而初学者很容易因为<=等写法违背此要求。而C++20引入了被戏称为“宇宙飞船运算符”的 <=>,现在只需定义<=>==就能自动生成其他比较运算,不必担心严格弱序问题。

613 日 , 2025 0:01:30
你知道吗?

C++23提供了标准库模块(目前仍是实验性),它与标准库头文件存在某种奇怪的关系:

#include <iostream>
import std; // 正常运行
import std;
#include <iostream> // 编译失败,重定义
612 日 , 2025 0:01:37
611 日 , 2025 0:01:44
你知道吗?

C++的lamdba表达式生成的是一个匿名(非联合非聚合)类类型的对象,所以你可以通过 decltype() 获取对象类型。以前此类型默认构造必然为 delete ;但自C++20 起,lambda表达式捕获列表为空时,默认构造为 default ,所以你可以写出这样的代码:

decltype([](int x,int y){return x < y;}) less; // 创建一个类对象
std::cout << less(1, 2); // 输出 1
std::set<
    int, 
    decltype([](const int x, const int y){return x > y;})
> my_set; // 直接在模板形参输入lambda表达式的类型,自定义set使用的比较运算
610 日 , 2025 0:01:11
你知道吗?

现在很多WIKI都选择使用mkdocs框架和material-mkdocs主题。如果你在OI-WIKI页面打开控制台,会发现有一行404报错。这是因为此主题在指定了仓库地址时会自动获取Stars数、forks数和最新release名,但OI-WIKI没有任何release。这完全不影响界面加载,但控制台报错令人不满,可惜目前还没有简单的配置项用于关闭release检索。

609 日 , 2025 0:01:36
你知道吗?

时间复杂度的大 O 符号的实际定义指得是大于等于上界的整个范围。比如归并排序的大O可以写作O(N*logN)、也可以写作O(2^N),因为O(2^N)>O(N*logN)。但是你不应该使用后者,实际使用大O表示的即使不是最紧上界也应该接近最紧上界,否则应该使用“复杂度小于O(…)”这样的表达。

608 日 , 2025 0:01:19
你知道吗?

GAMES104课程的Piccolo引擎,使用的第三方库和Vulkan-tutorial的内容基本一致(Vulkan + GLM + GLFW + STB + tinyobjloader + vulkanMemoryAllocator)。但是把第三方库代码直接放在了项目中,其中几个库的CMake配置现在过时。编译时可能需要修改GLM和tinyobjloader库的CMakeLists.txt,将CMake最小版本设为3.10以上。

607 日 , 2025 0:01:29
606 日 , 2025 0:01:15
你知道吗?

编程语言的第一步是“Hello World!”,而图形学编程则是渲染三角形。但是使用Vulkan(C风格接口)绘制第一个三角形就需要900行代码!!(使用Vulkan-hpp(C++封装)或Vulkano(Rust封装)则需要约700行代码。)

605 日 , 2025 0:01:25
你知道吗?

下面的游戏有两个(纯策略)纳什均衡点:

UserY : S0 UserY : S1
UserX : S0 1 , 1 0 , 0
UserX : S1 0 , 0 0 , 0
604 日 , 2025 0:01:54
你知道吗?

米哈游启动器是用QT5做的。而VSCode是用Electron做的(用Electron做的都比 Visual Studio 用起来“流畅”)。

603 日 , 2025 0:01:31
你知道吗?
#include <iostream>
struct A{ char a[2]{'3', '4'}; };
auto main() -> int{
    const auto& [b] = A{};
    std::cout << 1[b] << std::endl;
}

上述代码的输出是4,这里涉及了哪些语法?

602 日 , 2025 0:01:18
你知道吗?

Cppreference中并没有“编译期多态/静态多态”这一概念。此概念一般指的是函数重载和运算符重载,Cppref中有重载决议运算符重载章节,提供了极其细致的说明。这里的重点是,它并没有提及所谓的“编译期多态”概念。

所以有人粗读过Cppref但想不起来静态多态也很合理

601 日 , 2025 0:01:46