case的本质: case 只是一个标签(label),并不会隐式创建新的作用域。(想象成一个不自动关门的“标记”)
如果你在一个 case的标记下面,直接写一句 auto it = ...或 int x = 0来声明并初始化一个变量,编译器就会报错(提示:“跨越初始化”)。它怕的是:如果程序执行时,从别的地方“跳”到了这个 case标记的下一行,那就跳过了你初始化变量的那一步。一个变量没初始化就被用,是很危险的,所以编译器干脆禁止你这么做。
2026-03-18453 字1 分钟
哈希表unordered_map或者map查询规范
总结:优先使用方法1进行哈希表的查找 方法1: auto it = myMap.find(2); // 查找键为2的元素 if (it != myMap.end()) { std::cout << "Found: " << it->second << std::endl; } 原因: 使用find()函数,它执行纯查找操作,不修改容器。如果键不存在,返回end()迭代器,您可以安全地检查并处理未找到的情况,而不会影响unordered_map的状态。这是一种高效且无副作用的做法。
2026-02-221592 字4 分钟
Double类型浮点数偏差
1. 核心矛盾:有限的二进制位 vs 无限的实数 计算机内存是有限的,双精度浮点数(double)遵循IEEE 754标准,使用 64位 来存储一个数字。这64位被划分为符号位、指数位和尾数位(有效数字位)。关键限制在于:尾数部分只有53位有效二进制数字。