• C++标准模板(STL)- 类型支持 (数值极限,quiet_NaN,signaling_NaN,denorm_min)


    数值极限

    提供查询所有基础数值类型的性质的接口


    定义于头文件

    template< class T > class numeric_limits;

    numeric_limits 类模板提供查询各种算术类型属性的标准化方式(例如 int 类型的最大可能值是 std::numeric_limits::max() )。
     

    返回给定浮点类型的安静 NaN 值

    std::numeric_limits<T>::quiet_NaN

    static T quiet_NaN() throw();

    (C++11 前)

    static constexpr T quiet_NaN() noexcept;

    (C++11 起)

    返回特殊值“安静的非数”,以浮点类型 T 表示。仅若 std::numeric_limits::has_quiet_NaN == true 才有意义。在最常见的浮点数二进制表示 IEEE 754 中,任何所有指数位均为 1 且至少有一位尾数位为 1 的值表示 NaN 。何种尾数值表示安静或发信的 NaN ,及符号位是否有意义,是实现定义的。 

    返回值

    Tstd::numeric_limits::quiet_NaN()
    /* non-specialized */T()
    boolfalse
    char​0​
    signed char​0​
    unsigned char​0​
    wchar_t​0​
    char8_t​0​
    char16_t​0​
    char32_t​0​
    short​0​
    unsigned short​0​
    int​0​
    unsigned int​0​
    long​0​
    unsigned long​0​
    long long​0​
    unsigned long long​0​
    floatNAN 或另一实现定义的 NaN
    double实现定义
    long double实现定义

    注意

    NaN 与自身决不比较相等。复制 NaN 可能不保留其位表示。

    调用示例

    1. #include <iostream>
    2. #include <string>
    3. #include <limits>
    4. #include <cstdint>
    5. #include <cfloat>
    6. #include <cmath>
    7. struct SName
    8. {
    9. };
    10. //偏特化
    11. struct SPartSpec
    12. {
    13. };
    14. namespace std
    15. {
    16. template<>
    17. struct numeric_limits<SPartSpec>
    18. {
    19. static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
    20. static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
    21. static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
    22. static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
    23. static _GLIBCXX_USE_CONSTEXPR bool has_infinity = true;
    24. static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = true;
    25. static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = true;
    26. static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm = denorm_present;
    27. static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = true;
    28. static _GLIBCXX_USE_CONSTEXPR float_round_style round_style = round_toward_neg_infinity;
    29. static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = true;
    30. static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
    31. static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
    32. static _GLIBCXX_USE_CONSTEXPR int digits = CHAR_BIT;
    33. static _GLIBCXX_USE_CONSTEXPR int digits10 = CHAR_BIT;
    34. static _GLIBCXX_USE_CONSTEXPR int max_digits10 = DECIMAL_DIG;
    35. static _GLIBCXX_USE_CONSTEXPR int radix = FLT_RADIX;
    36. static _GLIBCXX_USE_CONSTEXPR int min_exponent = FLT_MIN_EXP;
    37. static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = FLT_MIN_10_EXP;
    38. static _GLIBCXX_USE_CONSTEXPR int max_exponent = FLT_MAX_EXP;
    39. static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = FLT_MAX_EXP;
    40. static _GLIBCXX_USE_CONSTEXPR bool traps = true;
    41. static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = true;
    42. static _GLIBCXX_CONSTEXPR int
    43. min() _GLIBCXX_USE_NOEXCEPT { return CHAR_MIN ; }
    44. static _GLIBCXX_CONSTEXPR int
    45. lowest() _GLIBCXX_USE_NOEXCEPT { return CHAR_MIN ; }
    46. static _GLIBCXX_CONSTEXPR int
    47. max() _GLIBCXX_USE_NOEXCEPT { return CHAR_MAX ; }
    48. static _GLIBCXX_CONSTEXPR int
    49. epsilon() _GLIBCXX_USE_NOEXCEPT { return LDBL_EPSILON ; }
    50. static _GLIBCXX_CONSTEXPR double
    51. round_error() _GLIBCXX_USE_NOEXCEPT { return 0.5F ; }
    52. static _GLIBCXX_CONSTEXPR double
    53. infinity() _GLIBCXX_USE_NOEXCEPT { return HUGE_VAL ; }
    54. static _GLIBCXX_CONSTEXPR double
    55. quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return NAN ; }
    56. };
    57. }
    58. int main()
    59. {
    60. std::cout << std::boolalpha;
    61. std::cout << "std::numeric_limits::quiet_NaN(): "
    62. << std::numeric_limits<bool>::quiet_NaN() << std::endl;
    63. std::cout << "std::numeric_limits::quiet_NaN(): "
    64. << std::numeric_limits<char>::quiet_NaN() << std::endl;
    65. std::cout << "std::numeric_limits::quiet_NaN(): "
    66. << std::numeric_limits<signed char>::quiet_NaN() << std::endl;
    67. std::cout << "std::numeric_limits::quiet_NaN(): "
    68. << std::numeric_limits<unsigned char>::quiet_NaN() << std::endl;
    69. std::cout << "std::numeric_limits::quiet_NaN(): "
    70. << std::numeric_limits<wchar_t>::quiet_NaN() << std::endl;
    71. std::cout << "std::numeric_limits::quiet_NaN(): "
    72. << std::numeric_limits<char16_t>::quiet_NaN() << std::endl;
    73. std::cout << "std::numeric_limits::quiet_NaN(): "
    74. << std::numeric_limits<char32_t>::quiet_NaN() << std::endl;
    75. std::cout << "std::numeric_limits::quiet_NaN(): "
    76. << std::numeric_limits<short>::quiet_NaN() << std::endl;
    77. std::cout << "std::numeric_limits::quiet_NaN(): "
    78. << std::numeric_limits<unsigned short>::quiet_NaN() << std::endl;
    79. std::cout << "std::numeric_limits::quiet_NaN(): "
    80. << std::numeric_limits<int>::quiet_NaN() << std::endl;
    81. std::cout << "std::numeric_limits::quiet_NaN(): "
    82. << std::numeric_limits<unsigned int>::quiet_NaN() << std::endl;
    83. std::cout << "std::numeric_limits::quiet_NaN(): "
    84. << std::numeric_limits<long>::quiet_NaN() << std::endl;
    85. std::cout << "std::numeric_limits::quiet_NaN(): "
    86. << std::numeric_limits<unsigned long>::quiet_NaN() << std::endl;
    87. std::cout << "std::numeric_limits::quiet_NaN(): "
    88. << std::numeric_limits<long long>::quiet_NaN() << std::endl;
    89. std::cout << "std::numeric_limits::quiet_NaN(): "
    90. << std::numeric_limits<unsigned long long>::quiet_NaN() << std::endl;
    91. std::cout << "std::numeric_limits::quiet_NaN(): "
    92. << std::numeric_limits<float>::quiet_NaN() << std::endl;
    93. std::cout << "std::numeric_limits::quiet_NaN(): "
    94. << std::numeric_limits<double>::quiet_NaN() << std::endl;
    95. std::cout << "std::numeric_limits::quiet_NaN(): "
    96. << std::numeric_limits<long double>::quiet_NaN() << std::endl;
    97. std::cout << "std::numeric_limits::quiet_NaN(): "
    98. << std::numeric_limits<std::string>::quiet_NaN() << std::endl;
    99. //必须偏特化
    100. // std::cout << "std::numeric_limits::quiet_NaN(): "
    101. // << std::numeric_limits<SName>::quiet_NaN() << std::endl;
    102. std::cout << "std::numeric_limits::quiet_NaN(): "
    103. << std::numeric_limits<SPartSpec>::quiet_NaN() << std::endl;
    104. return 0;
    105. }

    输出

    返回给定浮点类型的发信的 NaN

    std::numeric_limits<T>::signaling_NaN

    static T signaling_NaN() throw();

    (C++11 前)

    static constexpr T signaling_NaN() noexcept;

    (C++11 起)

     返回特殊值“发信的非数”,以浮点类型 T 表示。仅若 std::numeric_limits::has_signaling_NaN == true 才有意义。在最常见的浮点数二进制表示 IEEE 754 中,任何所有指数位均为 1 且至少有一位尾数位为 1 的值表示 NaN 。何种尾数位的值表示安静或发信的 NaN ,及符号位是否有意义,是实现定义的。

    返回值

    Tstd::numeric_limits::signaling_NaN()
    /* non-specialized */T()
    boolfalse
    char​0​
    signed char​0​
    unsigned char​0​
    wchar_t​0​
    char8_t​0​
    char16_t​0​
    char32_t​0​
    short​0​
    unsigned short​0​
    int​0​
    unsigned int​0​
    long​0​
    unsigned long​0​
    long long​0​
    unsigned long long​0​
    float实现定义
    double实现定义
    long double实现定义

    调用示例

    1. #include <iostream>
    2. #include <string>
    3. #include <limits>
    4. #include <cstdint>
    5. #include <cfloat>
    6. #include <cmath>
    7. struct SName
    8. {
    9. };
    10. //偏特化
    11. struct SPartSpec
    12. {
    13. };
    14. namespace std
    15. {
    16. template<>
    17. struct numeric_limits<SPartSpec>
    18. {
    19. static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
    20. static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
    21. static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
    22. static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
    23. static _GLIBCXX_USE_CONSTEXPR bool has_infinity = true;
    24. static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = true;
    25. static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = true;
    26. static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm = denorm_present;
    27. static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = true;
    28. static _GLIBCXX_USE_CONSTEXPR float_round_style round_style = round_toward_neg_infinity;
    29. static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = true;
    30. static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
    31. static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
    32. static _GLIBCXX_USE_CONSTEXPR int digits = CHAR_BIT;
    33. static _GLIBCXX_USE_CONSTEXPR int digits10 = CHAR_BIT;
    34. static _GLIBCXX_USE_CONSTEXPR int max_digits10 = DECIMAL_DIG;
    35. static _GLIBCXX_USE_CONSTEXPR int radix = FLT_RADIX;
    36. static _GLIBCXX_USE_CONSTEXPR int min_exponent = FLT_MIN_EXP;
    37. static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = FLT_MIN_10_EXP;
    38. static _GLIBCXX_USE_CONSTEXPR int max_exponent = FLT_MAX_EXP;
    39. static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = FLT_MAX_EXP;
    40. static _GLIBCXX_USE_CONSTEXPR bool traps = true;
    41. static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = true;
    42. static _GLIBCXX_CONSTEXPR int
    43. min() _GLIBCXX_USE_NOEXCEPT { return CHAR_MIN ; }
    44. static _GLIBCXX_CONSTEXPR int
    45. lowest() _GLIBCXX_USE_NOEXCEPT { return CHAR_MIN ; }
    46. static _GLIBCXX_CONSTEXPR int
    47. max() _GLIBCXX_USE_NOEXCEPT { return CHAR_MAX ; }
    48. static _GLIBCXX_CONSTEXPR int
    49. epsilon() _GLIBCXX_USE_NOEXCEPT { return LDBL_EPSILON ; }
    50. static _GLIBCXX_CONSTEXPR double
    51. round_error() _GLIBCXX_USE_NOEXCEPT { return 0.5F ; }
    52. static _GLIBCXX_CONSTEXPR double
    53. infinity() _GLIBCXX_USE_NOEXCEPT { return HUGE_VAL ; }
    54. static _GLIBCXX_CONSTEXPR double
    55. quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return NAN ; }
    56. static _GLIBCXX_CONSTEXPR double
    57. signaling_NaN() _GLIBCXX_USE_NOEXCEPT { return NAN ; }
    58. };
    59. }
    60. int main()
    61. {
    62. std::cout << std::boolalpha;
    63. std::cout << "std::numeric_limits::signaling_NaN(): "
    64. << std::numeric_limits<bool>::signaling_NaN() << std::endl;
    65. std::cout << "std::numeric_limits::signaling_NaN(): "
    66. << std::numeric_limits<char>::signaling_NaN() << std::endl;
    67. std::cout << "std::numeric_limits::signaling_NaN(): "
    68. << std::numeric_limits<signed char>::signaling_NaN() << std::endl;
    69. std::cout << "std::numeric_limits::signaling_NaN(): "
    70. << std::numeric_limits<unsigned char>::signaling_NaN() << std::endl;
    71. std::cout << "std::numeric_limits::signaling_NaN(): "
    72. << std::numeric_limits<wchar_t>::signaling_NaN() << std::endl;
    73. std::cout << "std::numeric_limits::signaling_NaN(): "
    74. << std::numeric_limits<char16_t>::signaling_NaN() << std::endl;
    75. std::cout << "std::numeric_limits::signaling_NaN(): "
    76. << std::numeric_limits<char32_t>::signaling_NaN() << std::endl;
    77. std::cout << "std::numeric_limits::signaling_NaN(): "
    78. << std::numeric_limits<short>::signaling_NaN() << std::endl;
    79. std::cout << "std::numeric_limits::signaling_NaN(): "
    80. << std::numeric_limits<unsigned short>::signaling_NaN() << std::endl;
    81. std::cout << "std::numeric_limits::signaling_NaN(): "
    82. << std::numeric_limits<int>::signaling_NaN() << std::endl;
    83. std::cout << "std::numeric_limits::signaling_NaN(): "
    84. << std::numeric_limits<unsigned int>::signaling_NaN() << std::endl;
    85. std::cout << "std::numeric_limits::signaling_NaN(): "
    86. << std::numeric_limits<long>::signaling_NaN() << std::endl;
    87. std::cout << "std::numeric_limits::signaling_NaN(): "
    88. << std::numeric_limits<unsigned long>::signaling_NaN() << std::endl;
    89. std::cout << "std::numeric_limits::signaling_NaN(): "
    90. << std::numeric_limits<long long>::signaling_NaN() << std::endl;
    91. std::cout << "std::numeric_limits::signaling_NaN(): "
    92. << std::numeric_limits<unsigned long long>::signaling_NaN() << std::endl;
    93. std::cout << "std::numeric_limits::signaling_NaN(): "
    94. << std::numeric_limits<float>::signaling_NaN() << std::endl;
    95. std::cout << "std::numeric_limits::signaling_NaN(): "
    96. << std::numeric_limits<double>::signaling_NaN() << std::endl;
    97. std::cout << "std::numeric_limits::signaling_NaN(): "
    98. << std::numeric_limits<long double>::signaling_NaN() << std::endl;
    99. std::cout << "std::numeric_limits::signaling_NaN(): "
    100. << std::numeric_limits<std::string>::signaling_NaN() << std::endl;
    101. //必须偏特化
    102. // std::cout << "std::numeric_limits::signaling_NaN(): "
    103. // << std::numeric_limits<SName>::signaling_NaN() << std::endl;
    104. std::cout << "std::numeric_limits::signaling_NaN(): "
    105. << std::numeric_limits<SPartSpec>::signaling_NaN() << std::endl;
    106. return 0;
    107. }

    输出

    返回给定浮点类型的最小正非正规值

    std::numeric_limits<T>::denorm_min

    static T denorm_min() throw();

    (C++11 前)

    static constexpr T denorm_min() noexcept;

    (C++11 起)

     若 std::numeric_limits::has_denorm != std::denorm_absent 则返回 T 类型的最小正非正规值,否则返回 std::numeric_limits::min() 。仅对浮点类型有意义。

    返回值

    Tstd::numeric_limits::denorm_min()
    /* non-specialized */T()
    boolfalse
    char​0​
    signed char​0​
    unsigned char​0​
    wchar_t​0​
    char8_t​0​
    char16_t​0​
    char32_t​0​
    short​0​
    unsigned short​0​
    int​0​
    unsigned int​0​
    long​0​
    unsigned long​0​
    long long​0​
    unsigned long long​0​
    float若 std::numeric_limits::is_iec559 == true 则为 2-149
    double若 std::numeric_limits::is_iec559 == true 则为 2-1074
    long double/* 实现定义 */

    调用示例

    1. #include <iostream>
    2. #include <string>
    3. #include <limits>
    4. #include <cstdint>
    5. #include <cfloat>
    6. #include <cmath>
    7. struct SName
    8. {
    9. };
    10. //偏特化
    11. struct SPartSpec
    12. {
    13. };
    14. namespace std
    15. {
    16. template<>
    17. struct numeric_limits<SPartSpec>
    18. {
    19. static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
    20. static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
    21. static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
    22. static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
    23. static _GLIBCXX_USE_CONSTEXPR bool has_infinity = true;
    24. static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = true;
    25. static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = true;
    26. static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm = denorm_present;
    27. static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = true;
    28. static _GLIBCXX_USE_CONSTEXPR float_round_style round_style = round_toward_neg_infinity;
    29. static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = true;
    30. static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
    31. static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
    32. static _GLIBCXX_USE_CONSTEXPR int digits = CHAR_BIT;
    33. static _GLIBCXX_USE_CONSTEXPR int digits10 = CHAR_BIT;
    34. static _GLIBCXX_USE_CONSTEXPR int max_digits10 = DECIMAL_DIG;
    35. static _GLIBCXX_USE_CONSTEXPR int radix = FLT_RADIX;
    36. static _GLIBCXX_USE_CONSTEXPR int min_exponent = FLT_MIN_EXP;
    37. static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = FLT_MIN_10_EXP;
    38. static _GLIBCXX_USE_CONSTEXPR int max_exponent = FLT_MAX_EXP;
    39. static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = FLT_MAX_EXP;
    40. static _GLIBCXX_USE_CONSTEXPR bool traps = true;
    41. static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = true;
    42. static _GLIBCXX_CONSTEXPR int
    43. min() _GLIBCXX_USE_NOEXCEPT { return CHAR_MIN ; }
    44. static _GLIBCXX_CONSTEXPR int
    45. lowest() _GLIBCXX_USE_NOEXCEPT { return CHAR_MIN ; }
    46. static _GLIBCXX_CONSTEXPR int
    47. max() _GLIBCXX_USE_NOEXCEPT { return CHAR_MAX ; }
    48. static _GLIBCXX_CONSTEXPR int
    49. epsilon() _GLIBCXX_USE_NOEXCEPT { return LDBL_EPSILON ; }
    50. static _GLIBCXX_CONSTEXPR double
    51. round_error() _GLIBCXX_USE_NOEXCEPT { return 0.5F ; }
    52. static _GLIBCXX_CONSTEXPR double
    53. infinity() _GLIBCXX_USE_NOEXCEPT { return HUGE_VAL ; }
    54. static _GLIBCXX_CONSTEXPR double
    55. quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return NAN ; }
    56. static _GLIBCXX_CONSTEXPR double
    57. signaling_NaN() _GLIBCXX_USE_NOEXCEPT { return NAN ; }
    58. static _GLIBCXX_CONSTEXPR double
    59. denorm_min() _GLIBCXX_USE_NOEXCEPT { return NAN ; }
    60. };
    61. }
    62. int main()
    63. {
    64. std::cout << std::boolalpha;
    65. std::cout << "std::numeric_limits::denorm_min(): "
    66. << std::numeric_limits<bool>::denorm_min() << std::endl;
    67. std::cout << "std::numeric_limits::denorm_min(): "
    68. << std::numeric_limits<char>::denorm_min() << std::endl;
    69. std::cout << "std::numeric_limits::denorm_min(): "
    70. << std::numeric_limits<signed char>::denorm_min() << std::endl;
    71. std::cout << "std::numeric_limits::denorm_min(): "
    72. << std::numeric_limits<unsigned char>::denorm_min() << std::endl;
    73. std::cout << "std::numeric_limits::denorm_min(): "
    74. << std::numeric_limits<wchar_t>::denorm_min() << std::endl;
    75. std::cout << "std::numeric_limits::denorm_min(): "
    76. << std::numeric_limits<char16_t>::denorm_min() << std::endl;
    77. std::cout << "std::numeric_limits::denorm_min(): "
    78. << std::numeric_limits<char32_t>::denorm_min() << std::endl;
    79. std::cout << "std::numeric_limits::denorm_min(): "
    80. << std::numeric_limits<short>::denorm_min() << std::endl;
    81. std::cout << "std::numeric_limits::denorm_min(): "
    82. << std::numeric_limits<unsigned short>::denorm_min() << std::endl;
    83. std::cout << "std::numeric_limits::denorm_min(): "
    84. << std::numeric_limits<int>::denorm_min() << std::endl;
    85. std::cout << "std::numeric_limits::denorm_min(): "
    86. << std::numeric_limits<unsigned int>::denorm_min() << std::endl;
    87. std::cout << "std::numeric_limits::denorm_min(): "
    88. << std::numeric_limits<long>::denorm_min() << std::endl;
    89. std::cout << "std::numeric_limits::denorm_min(): "
    90. << std::numeric_limits<unsigned long>::denorm_min() << std::endl;
    91. std::cout << "std::numeric_limits::denorm_min(): "
    92. << std::numeric_limits<long long>::denorm_min() << std::endl;
    93. std::cout << "std::numeric_limits::denorm_min(): "
    94. << std::numeric_limits<unsigned long long>::denorm_min() << std::endl;
    95. std::cout << "std::numeric_limits::denorm_min(): "
    96. << std::numeric_limits<float>::denorm_min() << std::endl;
    97. std::cout << "std::numeric_limits::denorm_min(): "
    98. << std::numeric_limits<double>::denorm_min() << std::endl;
    99. std::cout << "std::numeric_limits::denorm_min(): "
    100. << std::numeric_limits<long double>::denorm_min() << std::endl;
    101. std::cout << "std::numeric_limits::denorm_min(): "
    102. << std::numeric_limits<std::string>::denorm_min() << std::endl;
    103. //必须偏特化
    104. // std::cout << "std::numeric_limits::denorm_min(): "
    105. // << std::numeric_limits<SName>::denorm_min() << std::endl;
    106. std::cout << "std::numeric_limits::denorm_min(): "
    107. << std::numeric_limits<SPartSpec>::denorm_min() << std::endl;
    108. return 0;
    109. }

    输出

  • 相关阅读:
    【AI视野·今日Robot 机器人论文速览 第三十五期】Mon, 18 Sep 2023
    leetcode:53. 最大子数组和
    排序算法-冒泡、选择、堆、插入、归并、快速、希尔
    Telus ventures 国投创合 高瓴创投 达成战略合作
    ubuntu 设置最大带宽
    34 mysql limit 的实现
    基于高斯模型的运动目标检测(车辆检测),Matlab实现
    GeoJson格式标准规范
    SpringMVC(四、异常处理和综合练习)
    【PyCharm】设置(风格 | 字体 | 模板)
  • 原文地址:https://blog.csdn.net/qq_40788199/article/details/133831527