- 使用 less 替代 < 运算符可以让你的算法更加通用。例如, 当算法作用于无法提供 < 运算符的类型上时,该类型可以通过自定义 less 的重载版本,以继续工作。
- 当代码会对
比较结果是未定义的
[1]的指针进行比较时,一定要使用 std::less。C++ 标准规定 std::less 对任何指针类型生成的特化版本都实现严格全序,它保证能够安全的对指针进行比较。
扩展:
C++ Prime 第五版的中文译者曾在书中附注道 “less
上文内容也适用与 greater、less_equal、greater_equal。
参考:
- 知乎上对 less 使用问题的问答: https://www.zhihu.com/question/383222145
- cppreference 上对 std::less 的说明: https://en.cppreference.com/w/cpp/utility/functional/less
- cppreference 上对指针比较的说明: https://en.cppreference.com/w/cpp/language/operator_comparison
- C++ 标准草案 20.14.7 Comparisons 节对 std::less 的规约: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/n4849.pdf
- stack overflow 上对指针所存储的内容的讨论:https://stackoverflow.com/questions/15151377/what-exactly-is-a-c-pointer-if-not-a-memory-address
- 该 Q&A 列举了一些机器,它们使用不同的指针实现方式:https://c-faq.com/null/machexamp.html