| xgboost | 
#include <xgboost/base.h>#include <cstddef>#include <cstdio>#include <iterator>#include <limits>#include <type_traits>#include <utility>#include <vector>

| 命名空间 | |
| xgboost | |
| Learner 接口,将目标、gbm 和评估整合在一起。这是用户界面 XGBoost 训练模块。 | |
| xgboost::common | |
| xgboost::common::detail | |
| 宏 | |
| #define | __span_noexcept noexcept | 
| 基于 ISO++20 span 的 span 类 更多... | |
| #define | KERNEL_CHECK(cond) (XGBOOST_EXPECT((cond), true) ? static_cast<void>(0) : std::terminate()) | 
| #define | SPAN_CHECK(cond) KERNEL_CHECK(cond) | 
| #define | SPAN_LT(lhs, rhs) SPAN_CHECK((lhs) < (rhs)) | 
| 类型定义 | |
| 使用 | xgboost::common::detail::ptrdiff_t = typename std::conditional_t< std::is_same_v< std::ptrdiff_t, std::int64_t >, std::ptrdiff_t, std::int64_t > | 
| 枚举 | |
| 枚举类 | xgboost::common::byte : unsigned char | 
| 函数 | |
| 模板<class InputIt1 , class InputIt2 , class Compare = detail::Less<decltype(std::declval<InputIt1>().operator*())>> | |
| XGBOOST_DEVICE bool | xgboost::common::detail::LexicographicalCompare (InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2) | 
| 模板<class T , std::size_t X, class U , std::size_t Y> | |
| XGBOOST_DEVICE bool | xgboost::common::operator== (Span< T, X > l, Span< U, Y > r) | 
| 模板<class T , std::size_t X, class U , std::size_t Y> | |
| constexpr XGBOOST_DEVICE bool | xgboost::common::operator!= (Span< T, X > l, Span< U, Y > r) | 
| 模板<class T , std::size_t X, class U , std::size_t Y> | |
| constexpr XGBOOST_DEVICE bool | xgboost::common::operator< (Span< T, X > l, Span< U, Y > r) | 
| 模板<class T , std::size_t X, class U , std::size_t Y> | |
| constexpr XGBOOST_DEVICE bool | xgboost::common::operator<= (Span< T, X > l, Span< U, Y > r) | 
| 模板<class T , std::size_t X, class U , std::size_t Y> | |
| constexpr XGBOOST_DEVICE bool | xgboost::common::operator> (Span< T, X > l, Span< U, Y > r) | 
| 模板<class T , std::size_t X, class U , std::size_t Y> | |
| constexpr XGBOOST_DEVICE bool | xgboost::common::operator>= (Span< T, X > l, Span< U, Y > r) | 
| 模板<class T , std::size_t E> | |
| XGBOOST_DEVICE auto | xgboost::common::as_bytes (Span< T, E > s) __span_noexcept -> Span< const byte, detail::ExtentAsBytesValue< T, E >::value > | 
| 模板<class T , std::size_t E> | |
| XGBOOST_DEVICE auto | xgboost::common::as_writable_bytes (Span< T, E > s) __span_noexcept -> Span< byte, detail::ExtentAsBytesValue< T, E >::value > | 
| template<typename T > | |
| xgboost::common::Span (std::vector< T > const &) -> Span< T const > | |
| template<typename T > | |
| xgboost::common::Span (std::vector< T > &) -> Span< T > | |
| 变量 | |
| constexpr std::size_t | xgboost::common::dynamic_extent = std::numeric_limits<std::size_t>::max() | 
| #define __span_noexcept noexcept | 
基于 ISO++20 span 的 span 类
版权所有 2018-2024, XGBoost 贡献者
关于此文件中的 NOLINT
如果我们希望 Span 与 std 接口(如范围 for 循环)一起工作,则命名必须与 std 一致,而不是 XGBoost。此外,接口也与 XGBoost 编码风格冲突,特别是“explicit”关键字的使用。
部分代码复制自 Guidelines Support Library,其许可证如下:
版权所有 (c) 2015 Microsoft Corporation。保留所有权利。
此代码根据 MIT 许可证 (MIT) 获得许可。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权诉讼或其他方面,由本软件或本软件的使用或其他交易引起、与之相关或由此产生。
版本号 1910 取自 GSL。
我们可能希望使用 dmlc/concurrentqueue.h 中的 MOODYCAMEL_NOEXCEPT。但该文件中还有许多其他定义会在 MSVC 2013 中引起警告/麻烦。目前我们试图将 Span 的闭包保持在最小。
还有其他针对 MSVC 的变通方法,如 _Unwrapped、_Verify_range ... 其中一些是 MSVC 的隐藏魔法,我试图避免它们。如果其中任何一个变得必要,请查阅 GSL 的源代码,并可能参考此线程中的一些解释:
https://github.com/Microsoft/GSL/pull/664
TODO(trivialfis): 将这些 MSVC 变通方法分组到一个易于管理的地方。
| #define KERNEL_CHECK | ( | 条件 | ) | (XGBOOST_EXPECT((cond), true) ? static_cast<void>(0) : std::terminate()) | 
| #define SPAN_CHECK | ( | 条件 | ) | KERNEL_CHECK(cond) | 
| #define SPAN_LT | ( | 左值, | |
| 右值 | |||
| ) | SPAN_CHECK((lhs) < (rhs)) |