使用 C++20 安全地比较不同类型的整型值
本篇介绍几个细琐的小特性,可以使代码更加安全可靠。 最常见的情况是采取 for loop 遍历某个容器,比如: std::vector<int> v(10); std::ranges::iota(v, 0); for (int i = v.size() – 1; i >= 0; –i) { std::cout << v[i] << ' '; } 乍看之下,似乎并无问题,但实际上却存在安全隐患,若是 v.size() 的结果大于 std::numeric_limits<int>::max(),将产生 UB。 倘若你使用了类型推导,问题会更加明显。 for (auto i = v.size() – 1; i >= 0; –i) { std::cout << v[i] <<… Continue Reading 使用 C++20 安全地比较不同类型的整型值