|
| template<class T, size_t N, class F> |
| F | for_each (Channel< T, N > &channel, F &&func) |
| | 遍历通道中的所有元素。
|
| template<class F, class... Args> |
| auto | async (F &&f, Args &&...args) -> std::future< decltype(std::forward< F >(f)(std::forward< Args >(args)...))> |
| | 提交一个可调用对象到全局线程池执行。
|
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >()+std::declval< U >()), Dims... > | operator+ (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >() - std::declval< U >()), Dims... > | operator- (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >() *std::declval< U >()), Dims... > | operator* (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >()/std::declval< U >()), Dims... > | operator/ (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >() % std::declval< U >()), Dims... > | operator% (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator+= (MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator-= (MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator*= (MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator/= (MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator%= (MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator+= (MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator-= (MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator*= (MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator/= (MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator%= (MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator== (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator!= (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator< (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator> (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator<= (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator>= (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >()+std::declval< U >()), Dims... > | operator+ (const MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >() - std::declval< U >()), Dims... > | operator- (const MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >() *std::declval< U >()), Dims... > | operator* (const MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >()/std::declval< U >()), Dims... > | operator/ (const MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >() % std::declval< U >()), Dims... > | operator% (const MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >()+std::declval< U >()), Dims... > | operator+ (const U &a, const MultiArray< T, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >() - std::declval< U >()), Dims... > | operator- (const U &a, const MultiArray< T, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >() *std::declval< U >()), Dims... > | operator* (const U &a, const MultiArray< T, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >()/std::declval< U >()), Dims... > | operator/ (const U &a, const MultiArray< T, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >() % std::declval< U >()), Dims... > | operator% (const U &a, const MultiArray< T, Dims... > &b) |
| template<class T, size_t... Dims> |
| MultiArray< decltype(+std::declval< T >()), Dims... > | operator+ (const MultiArray< T, Dims... > &a) |
| template<class T, size_t... Dims> |
| MultiArray< decltype(- std::declval< T >()), Dims... > | operator- (const MultiArray< T, Dims... > &a) |
| template<class T, size_t... Dims> |
| MultiArray< decltype(~ std::declval< T >()), Dims... > | operator~ (const MultiArray< T, Dims... > &a) |
| template<class T, size_t... Dims> |
| MultiArray< bool, Dims... > | operator! (const MultiArray< T, Dims... > &a) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator== (const MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator!= (const MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator< (const MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator> (const MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator<= (const MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator>= (const MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator== (const U &a, const MultiArray< T, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator!= (const U &a, const MultiArray< T, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator< (const U &a, const MultiArray< T, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator> (const U &a, const MultiArray< T, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator<= (const U &a, const MultiArray< T, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator>= (const U &a, const MultiArray< T, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator&& (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator|| (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator&& (const MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator|| (const MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator&& (const U &a, const MultiArray< T, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< bool, Dims... > | operator|| (const U &a, const MultiArray< T, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >() &std::declval< U >()), Dims... > | operator& (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >()|std::declval< U >()), Dims... > | operator| (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >() ^ std::declval< U >()), Dims... > | operator^ (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >()<< std::declval< U >()), Dims... > | operator<< (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >() > > std::declval< U >()), Dims... > | operator>> (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator&= (MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator|= (MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator^= (MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator<<= (MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator>>= (MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >() &std::declval< U >()), Dims... > | operator& (const MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >()|std::declval< U >()), Dims... > | operator| (const MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >() ^ std::declval< U >()), Dims... > | operator^ (const MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >()<< std::declval< U >()), Dims... > | operator<< (const MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >() > > std::declval< U >()), Dims... > | operator>> (const MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >() &std::declval< U >()), Dims... > | operator& (const U &a, const MultiArray< T, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >()|std::declval< U >()), Dims... > | operator| (const U &a, const MultiArray< T, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >() ^ std::declval< U >()), Dims... > | operator^ (const U &a, const MultiArray< T, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< decltype(std::declval< T >() > > std::declval< U >()), Dims... > | operator>> (const U &a, const MultiArray< T, Dims... > &b) |
| template<class T, class U, size_t... Dims> |
| std::enable_if<!std::is_base_of< std::ios_base, U >::value, MultiArray< decltype(std::declval< U >()<< std::declval< T >()), Dims... > >::type | operator<< (const U &value, const MultiArray< T, Dims... > &a) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator&= (MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator|= (MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator^= (MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator<<= (MultiArray< T, Dims... > &a, const U &b) |
| template<class T, class U, size_t... Dims> |
| MultiArray< T, Dims... > & | operator>>= (MultiArray< T, Dims... > &a, const U &b) |
| template<class T, size_t... Dims> |
| T | sum (const MultiArray< T, Dims... > &a) |
| | 求和所有元素。
|
| template<class T, size_t... Dims> |
| T | min (const MultiArray< T, Dims... > &a) |
| | 求最小值。
|
| template<class T, size_t... Dims> |
| T | max (const MultiArray< T, Dims... > &a) |
| | 求最大值。
|
| template<class T, size_t... Dims> |
| bool | all (const MultiArray< T, Dims... > &a) |
| | 检查所有元素是否都为 true(逻辑与归约)。
|
| template<class T, size_t... Dims> |
| bool | any (const MultiArray< T, Dims... > &a) |
| | 检查是否存在至少一个 true 元素(逻辑或归约)。
|
| template<class T, class U, size_t... Dims> |
| bool | equals (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| | 检查两个 MultiArray 是否相等。
|
| template<class T, class U, size_t... Dims1, size_t... Dims2> |
| constexpr bool | equals (const MultiArray< T, Dims1... > &, const MultiArray< U, Dims2... > &) |
| | 检查两个 MultiArray 是否相等。
|
| template<class T, class U, size_t... Dims, class Op> |
| bool | equals (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b, Op &&op) |
| | 检查两个 MultiArray 是否相等。
|
| template<class T, class U, size_t... Dims1, size_t... Dims2, class Op> |
| constexpr bool | equals (const MultiArray< T, Dims1... > &, const MultiArray< U, Dims2... > &, Op &&) |
| | 检查两个 MultiArray 是否相等。
|
| template<class T, class U, size_t... Dims> |
| int | compare (const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b) |
| | 比较两个 MultiArray 的大小。
|
| template<class CharT, class Traits> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &os, const View< std::string > &sv) |
| | 输出 std::string 视图的内容。
|
| template<class CharT, class Traits, class Container> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &os, const View< Container > &v) |
| | 输出任意视图的内容。
|
| template<class Container> |
| View< Container > | make_view (Container &cont) |
| | 创建整个容器的视图(可变版本)。
|
| template<class Container> |
| View< const Container > | make_view (const Container &cont) |
| | 创建整个容器的视图(常量版本)。
|
| template<class Container> |
| View< Container > | make_view (Container &cont, size_t start, size_t end) |
| | 创建容器子区间的视图(可变版本)。
|
| template<class Container> |
| View< const Container > | make_view (const Container &cont, size_t start, size_t end) |
| | 创建容器子区间的视图(常量版本)。
|
| template<class Container> |
| View< Container > | make_view (typename Container::iterator begin, typename Container::iterator end) |
| | 从迭代器对创建视图(可变版本)。
|
| template<class Container> |
| View< const Container > | make_view (typename Container::const_iterator begin, typename Container::const_iterator end) |
| | 从迭代器对创建视图(常量版本)。
|
| template<class T> |
| View< T[]> | make_view (T *begin, T *end) |
| | 从指针对创建视图(可变版本)。
|
| template<class T> |
| View< const T[]> | make_view (const T *begin, const T *end) |
| | 从指针对创建视图(常量版本)。
|
| template<class T> |
| View< T[]> | make_view (T *data, size_t count) |
| | 从指针和长度创建视图(可变版本)。
|
| template<class T> |
| View< const T[]> | make_view (const T *data, size_t count) |
| | 从指针和长度创建视图(常量版本)。
|
| std::string | license () |
| | 返回 MIT 许可证全文。
|
| std::string | platform () |
| | 返回当前操作系统平台名称。
|
| std::string | compiler () |
| | 返回当前使用的编译器名称和版本。
|
| std::string | version () |
| | 返回库的版本字符串。
|
| std::string | author () |
| | 返回库的作者。
|
| void | cc (const char *clr=color::Reset, std::ostream &os=std::cout) |
| | 修改颜色。
|
| void | cc (const char *clr=color::Reset, std::wostream &os=std::wcout) |
| | 修改颜色。
|
| template<class T = std::string, class CharT = char> |
| T | input (const CharT *prompt="", const BasicInputSettings< CharT > &is=input_settings) |
| | 从标准输入读取一个值,支持类型模板。
|
| template<class T = std::string> |
| T | w_input (const wchar_t *prompt=L"", const WInputSettings &is=w_input_settings) |
| | 读取一行宽字符字符串。
|
| long double | input_number (const char *prompt="Type a number: ", const InputSettings &is=input_settings) |
| | 读取一个 long double 类型的数字。
|
| template<class CharT = char> |
| std::basic_string< CharT > | input_line (const CharT *prompt="", const BasicInputSettings< CharT > &is=input_settings) |
| | 读取一整行字符串(包含空格)。
|
| template<class T, class CharT = char> |
| T | input_with_range (T min, T max, const CharT *prompt="", const BasicInputSettings< CharT > &is=input_settings) |
| | 读取一个在指定范围内的数字。
|
| template<class CharT = char> |
| CharT | input_char (const CharT *prompt="", const BasicInputSettings< CharT > &is=input_settings) |
| | 读取一个字符。
|
| bool | input_yes_or_no (const char *prompt="Type yes or no: ", const InputSettings &is=input_settings) |
| | 读取一个 y/n 确认,返回布尔值。
|
| template<class CharT = char> |
| std::basic_string< CharT > | input_all (const CharT *prompt="", const BasicInputSettings< CharT > &is=input_settings) |
| | 读取输入流中剩余的全部内容(直到 EOF)。
|
| std::ostream & | operator<< (std::ostream &os, Key k) |
| | 让 Key 可以被打印。
|
| template<class CharT, class Traits, class T> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &, const std::vector< T > &) |
| | std::vector 输出声明。
|
| template<class CharT, class Traits, class T> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &, const std::deque< T > &) |
| | std::deque 输出声明。
|
| template<class CharT, class Traits, class T> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &, const std::list< T > &) |
| | std::list 输出声明。
|
| template<class CharT, class Traits, class T> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &, const std::forward_list< T > &) |
| | std::forward_list 输出声明。
|
| template<class CharT, class Traits, class T, size_t n> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &, const std::array< T, n > &) |
| | std::array 输出声明。
|
| template<class CharT, class Traits, class T> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &, const std::set< T > &) |
| | std::set 输出声明。
|
| template<class CharT, class Traits, class K, class V> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &, const std::map< K, V > &) |
| | std::map 输出声明。
|
| template<class CharT, class Traits, class T> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &, const std::multiset< T > &) |
| | std::multiset 输出声明。
|
| template<class CharT, class Traits, class K, class V> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &, const std::multimap< K, V > &) |
| | std::multimap 输出声明。
|
| template<class CharT, class Traits, class T> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &, const std::unordered_set< T > &) |
| | std::unordered_set 输出声明。
|
| template<class CharT, class Traits, class K, class V> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &, const std::unordered_map< K, V > &) |
| | std::unordered_map 输出声明。
|
| template<class CharT, class Traits, class T> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &, const std::unordered_multiset< T > &) |
| | std::unordered_multiset 输出声明。
|
| template<class CharT, class Traits, class K, class V> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &, const std::unordered_multimap< K, V > &) |
| | std::unordered_multimap 输出声明。
|
| template<class CharT, class Traits, class T, class U> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &, const std::pair< T, U > &) |
| | std::pair 输出声明。
|
| template<class CharT, class Traits, class... Args> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &, const std::tuple< Args... > &) |
| | std::tuple 输出声明。
|
| template<class CharT, class Traits, class T> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &, const std::valarray< T > &) |
| | std::valarray 输出声明。
|
| template<class CharT, class Traits, class StrOrCharType> |
| std::enable_if< is_string< typenamestd::decay< StrOrCharType >::type >::value||is_char< typenamestd::decay< StrOrCharType >::type >::value >::type | put (std::basic_ostream< CharT, Traits > &os, StrOrCharType &&value) |
| template<class CharT, class Traits, class OtherType> |
| std::enable_if<!is_string< typenamestd::decay< OtherType >::type >::value &&!is_char< typenamestd::decay< OtherType >::type >::value >::type | put (std::basic_ostream< CharT, Traits > &os, OtherType &&value) |
| | 否则,调用 repr 格式化。
|
| template<class CharT, class Traits, class Cont> |
| std::basic_ostream< CharT, Traits > & | cont_print_sequence (std::basic_ostream< CharT, Traits > &os, const Cont &cont) |
| | 输出序列容器(如 vector, list)的内容,格式为 [a, b, c]。
|
| template<class CharT, class Traits, class Cont> |
| std::basic_ostream< CharT, Traits > & | cont_print_set (std::basic_ostream< CharT, Traits > &os, const Cont &cont) |
| | 输出集合容器(如 set, unordered_set)的内容,格式为 {a, b, c}。
|
| template<class CharT, class Traits, class Cont> |
| std::basic_ostream< CharT, Traits > & | cont_print_map (std::basic_ostream< CharT, Traits > &os, const Cont &cont) |
| | 输出映射容器(如 map, unordered_map)的内容,格式为 {key: value, ...}。
|
| template<class T, size_t N> |
| std::array< T, N > | to_array (const T(&ar)[N]) |
| | 将 C 风格数组转换为 std::array。
|
| template<class T, size_t N> |
| std::vector< T > | to_vector (const T(&ar)[N]) |
| | 将 C 风格数组转换为 std::vector。
|
| BasicOutput & | get_print () |
| | 内部单例(char)。
|
| BasicOutput< wchar_t > & | get_wprint () |
| | 内部单例(wchar_t)。
|
| template<class CharT = char, class Traits = std::char_traits<CharT>, class Cont> |
| auto | progress (Cont &&cont, const BasicProgressConfig< CharT, Traits > &pc) -> BasicProgress< CharT, Traits, decltype(std::begin(cont))> |
| | 创建进度条对象的辅助函数。
|
| void | gotoxy (int x, int y) noexcept |
| | 将光标移动到指定位置。
|
| void | clear () noexcept |
| | 清空整个屏幕并将光标复位到 (1,1)。
|
| void | save_cursor () noexcept |
| | 保存当前光标位置。
|
| void | restore_cursor () noexcept |
| | 恢复之前保存的光标位置。
|
| void | hide_cursor () noexcept |
| | 隐藏光标(提高视觉效果)。
|
| void | show_cursor () noexcept |
| | 显示光标(恢复默认)。
|
| std::pair< int, int > | get_terminal_size () noexcept |
| | 获取终端尺寸(行数和列数)。
|
| void | reset () noexcept |
| | 重置终端所有属性(颜色、样式、光标等)到默认状态。
|
| void | clear_line () noexcept |
| | 清空当前光标所在行。
|
| void | clear_to_eol () noexcept |
| | 清空从光标位置到行尾。
|
| void | movel (int n=1) noexcept |
| | 向左相对移动。
|
| void | mover (int n=1) noexcept |
| | 向右相对移动。
|
| void | moveu (int n=1) noexcept |
| | 向上相对移动。
|
| void | moved (int n=1) noexcept |
| | 向下相对移动。
|
| void | save_screen () noexcept |
| | 保存屏幕内容。
|
| void | restore_screen () noexcept |
| | 恢复屏幕内容。
|
| void | clear_screen_save () noexcept |
| | 清空屏幕并保留历史。
|
| template<class T, size_t... Dims> |
| double | mean (const MultiArray< T, Dims... > &arr) |
| | 计算 MultiArray 中所有元素的算术平均值。
|
| template<class T, size_t... Dims> |
| double | variance (const MultiArray< T, Dims... > &arr, bool sample=true) |
| | 计算方差。
|
| template<class T, size_t... Dims> |
| double | stddev (const MultiArray< T, Dims... > &arr, bool sample=true) |
| | 计算标准差。
|
| template<class T, size_t N> |
| T | dot (const MultiArray< T, N > &a, const MultiArray< T, N > &b) |
| | 计算两个一维向量的点积。
|
| template<class T, size_t N> |
| double | norm (const MultiArray< T, N > &a) |
| | 计算向量的欧几里得范数(L2 范数)。
|
| template<class T, size_t N> |
| double | cosine (const MultiArray< T, N > &a, const MultiArray< T, N > &b) |
| | 计算两个向量的余弦相似度。
|
| template<class T, size_t N> |
| MultiArray< T, N > | normalize (const MultiArray< T, N > &a) |
| | 将向量归一化为单位向量。
|
| template<class T, size_t N> |
| double | euclidean (const MultiArray< T, N > &a, const MultiArray< T, N > &b) |
| | 计算两个向量的欧几里得距离。
|
| template<class T, size_t N> |
| double | manhattan (const MultiArray< T, N > &a, const MultiArray< T, N > &b) |
| | 计算两个向量的曼哈顿距离(L1 距离)。
|
| template<class T, size_t M, size_t N, size_t K> |
| MultiArray< T, M, K > | matmul_blocked (const MultiArray< T, M, N > &A, const MultiArray< T, N, K > &B) |
| | 矩阵乘法(二维),使用分块算法。
|
| template<class T, size_t M, size_t N, size_t K> |
| MultiArray< T, M, K > | matmul_simple (const MultiArray< T, M, N > &A, const MultiArray< T, N, K > &B) |
| | 矩阵乘法(二维),使用简单算法。
|
| template<class T, size_t M, size_t N, size_t K> |
| MultiArray< T, M, K > | matmul_impl (const MultiArray< T, M, N > &A, const MultiArray< T, N, K > &B, std::true_type) |
| | 矩阵乘法(二维) std::true_type 特化,使用分块算法。
|
| template<class T, size_t M, size_t N, size_t K> |
| MultiArray< T, M, K > | matmul_impl (const MultiArray< T, M, N > &A, const MultiArray< T, N, K > &B, std::false_type) |
| | 矩阵乘法(二维) std::false_type 特化,使用简单算法。
|
| template<class T, size_t M, size_t N, size_t K> |
| MultiArray< T, M, K > | matmul (const MultiArray< T, M, N > &A, const MultiArray< T, N, K > &B) |
| | 矩阵乘法(二维),根据 BLOCK 大小选择简单算法或分块算法。
|
| template<class T, size_t M, size_t N, size_t K> |
| MultiArray< T, M, K > | matmul_parallel (const MultiArray< T, M, N > &A, const MultiArray< T, N, K > &B) |
| | 并行矩阵乘法(二维),使用分块算法并行计算。
|
| template<class T, size_t M, size_t N> |
| MultiArray< T, N, M > | transpose (const MultiArray< T, M, N > &A) |
| | 矩阵转置。
|
| template<class T, size_t N> |
| MultiArray< T, N, N > | identity () |
| | 生成 N×N 的单位矩阵。
|
| template<class T, size_t N> |
| T | trace (const MultiArray< T, N, N > &A) |
| | 计算方阵的迹(对角线元素之和)。
|
| template<class T> |
| MultiArray< T, 3 > | cross (const MultiArray< T, 3 > &a, const MultiArray< T, 3 > &b) |
| | 三维向量的叉积。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | clamp (const MultiArray< T, Dims... > &arr, T low, T high) |
| | 将数组每个元素限制在 [low, high] 范围内。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | abs (const MultiArray< T, Dims... > &arr) |
| | 计算数组中每个元素的绝对值。
|
| template<class T, size_t... Dims> |
| void | randomize (MultiArray< T, Dims... > &arr, T min=0, T max=100) |
| | 用均匀分布随机数填充数组。
|
| template<class T, size_t... Dims> |
| void | randomize_normal (MultiArray< T, Dims... > &arr, T mean=0, T stddev=1) |
| | 用正态分布随机数填充数组。
|
| template<class T, size_t... Dims> |
| void | linspace (MultiArray< T, Dims... > &arr, T start, T end) |
| | 用线性等间距值填充数组。
|
| template<class T, size_t... Dims> |
| T | product (const MultiArray< T, Dims... > &arr) |
| | 计算所有元素的乘积。
|
| template<class T, size_t... Dims> |
| T | kth_smallest (MultiArray< T, Dims... > arr, size_t k) |
| | 查找第 k 小的元素(会修改数组顺序)。
|
| template<class T, size_t N, size_t K> |
| MultiArray< T, N+K - 1 > | convolve1d (const MultiArray< T, N > &signal, const MultiArray< T, K > &kernel) |
| | 一维卷积。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | sin (const MultiArray< T, Dims... > &arr) |
| | 对数组每个元素应用 std::sin。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | cos (const MultiArray< T, Dims... > &arr) |
| | 对数组每个元素应用 std::cos。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | tan (const MultiArray< T, Dims... > &arr) |
| | 对数组每个元素应用 std::tan。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | asin (const MultiArray< T, Dims... > &arr) |
| | 对数组每个元素应用 std::asin。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | acos (const MultiArray< T, Dims... > &arr) |
| | 对数组每个元素应用 std::acos。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | atan (const MultiArray< T, Dims... > &arr) |
| | 对数组每个元素应用 std::atan。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | sinh (const MultiArray< T, Dims... > &arr) |
| | 对数组每个元素应用 std::sinh。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | cosh (const MultiArray< T, Dims... > &arr) |
| | 对数组每个元素应用 std::cosh。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | tanh (const MultiArray< T, Dims... > &arr) |
| | 对数组每个元素应用 std::tanh。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | exp (const MultiArray< T, Dims... > &arr) |
| | 对数组每个元素应用 std::exp。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | log (const MultiArray< T, Dims... > &arr) |
| | 对数组每个元素应用 std::log(自然对数)。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | log10 (const MultiArray< T, Dims... > &arr) |
| | 对数组每个元素应用 std::log10(常用对数)。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | pow (const MultiArray< T, Dims... > &arr, T exponent) |
| | 对数组每个元素取幂(常数指数)。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | pow (const MultiArray< T, Dims... > &base, const MultiArray< T, Dims... > &exp) |
| | 对数组每个元素取幂(指数也是数组,逐元素计算)。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | floor (const MultiArray< T, Dims... > &arr) |
| | 对数组每个元素向下取整。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | ceil (const MultiArray< T, Dims... > &arr) |
| | 对数组每个元素向上取整。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | round (const MultiArray< T, Dims... > &arr) |
| | 对数组每个元素四舍五入。
|
| template<class T, size_t... Dims, class CharT, class Traits = std::char_traits<CharT>> |
| void | print_stats (std::basic_ostream< CharT, Traits > &os, const MultiArray< T, Dims... > &arr, const std::string &name="") |
| | 打印数组的基本统计信息(和、均值、最小值、最大值、标准差)。
|
| template<class T, size_t... Dims> |
| double | covariance (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| | 计算两个数组的协方差。
|
| template<class T, size_t... Dims> |
| double | correlation (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b) |
| | 计算两个数组的相关系数。
|
| template<class T, size_t... Dims> |
| double | median (MultiArray< T, Dims... > arr) |
| | 计算数组的中位数。
|
| template<class T, size_t... Dims> |
| double | quantile (MultiArray< T, Dims... > arr, double q, QuantileMethod method=QuantileMethod::Nearest) |
| | 计算数组的分位数。
|
| template<class T> |
| T | det2x2 (const MultiArray< T, 2, 2 > &A) |
| | 计算 2x2 矩阵的行列式。
|
| template<class T> |
| T | det3x3 (const MultiArray< T, 3, 3 > &A) |
| | 计算 3x3 矩阵的行列式。
|
| template<class T> |
| MultiArray< T, 2, 2 > | inv2x2 (const MultiArray< T, 2, 2 > &A) |
| | 计算 2x2 矩阵的逆矩阵。
|
| template<class T> |
| MultiArray< T, 3, 3 > | inv3x3 (const MultiArray< T, 3, 3 > &A) |
| | 计算 3x3 矩阵的逆矩阵。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | sigmoid (const MultiArray< T, Dims... > &arr) |
| | 计算 Sigmoid 激活函数。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | relu (const MultiArray< T, Dims... > &arr) |
| | 计算 ReLU 激活函数。
|
| template<class T, size_t... Dims> |
| MultiArray< T, Dims... > | softmax (const MultiArray< T, Dims... > &arr) |
| | 计算 Softmax 激活函数。
|
| template<class T, size_t H, size_t W, size_t KH, size_t KW> |
| MultiArray< T, H - KH+1, W - KW+1 > | convolve2d (const MultiArray< T, H, W > &image, const MultiArray< T, KH, KW > &kernel) |
| | 执行二维卷积操作。
|
| template<class T, size_t M, size_t N> |
| void | print_matrix (std::ostream &os, const MultiArray< T, M, N > &A, const char *name=nullptr) |
| | 打印矩阵。
|
| template<class T, size_t N> |
| MultiArray< std::complex< T >, N > | fft (const MultiArray< std::complex< T >, N > &x) |
| | 一维 FFT(Cooley-Tukey 算法)。
|
| template<class T, size_t N> |
| MultiArray< std::complex< T >, N > | ifft (const MultiArray< std::complex< T >, N > &X) |
| | 一维 IFFT(逆快速傅里叶变换)。
|
| template<class T, size_t N> |
| MultiArray< std::complex< T >, N > | rfft (const MultiArray< T, N > &x) |
| | 实数 FFT(输入为实数,输出为复数频域)。
|
| template<class T, size_t N> |
| MultiArray< T, N > | irfft (const MultiArray< std::complex< T >, N > &X) |
| | 实数 IFFT(输入为复数频域,输出为实数时域)。
|
| template<class T, size_t N> |
| MultiArray< T, N/2+1 > | spectrum (const MultiArray< T, N > &x) |
| | 频谱(幅值谱),归一化到真实幅度。
|
| template<class T, size_t N> |
| MultiArray< T, N/2+1 > | power_spectrum (const MultiArray< T, N > &x) |
| | 功率谱(幅值平方)。
|
| template<class T, size_t N> |
| MultiArray< T, N/2+1 > | phase_spectrum (const MultiArray< T, N > &x) |
| | 相位谱(弧度)。
|
| template<class T, size_t N> |
| MultiArray< T, N/2+1 > | log_spectrum (const MultiArray< T, N > &x) |
| | 对数频谱(分贝)。
|
| template<class T, size_t M, size_t N> |
| MultiArray< T, M > | matvec (const MultiArray< T, M, N > &A, const MultiArray< T, N > &x) |
| | 矩阵-向量乘法。
|
| template<class T, size_t M, size_t N> |
| MultiArray< T, M, N > | outer (const MultiArray< T, M > &a, const MultiArray< T, N > &b) |
| | 外积。
|
| template<class T, size_t M, size_t N> |
| double | frobenius_norm (const MultiArray< T, M, N > &A) |
| | 矩阵范数(弗罗贝尼乌斯范数)。
|
| template<class T, size_t M, size_t N> |
| T | column_norm (const MultiArray< T, M, N > &A) |
| | 列范数(最大列和范数)。
|
| template<class T, size_t M, size_t N> |
| T | row_norm (const MultiArray< T, M, N > &A) |
| | 行范数(最大行和范数)。
|
| template<class T, size_t N> |
| MultiArray< T, N > | hann_window () |
| | 窗函数。
|
| template<class T, size_t N> |
| MultiArray< T, N > | hamming_window () |
| | 汉明窗。
|
| template<class T, size_t N> |
| MultiArray< T, N > | blackman_window () |
| | 布莱克曼窗。
|
| template<class T, size_t N> |
| MultiArray< T, N > | fftshift (const MultiArray< T, N > &x) |
| | FFT 移位。
|
| template<class T, size_t N, size_t M> |
| MultiArray< T, N+M - 1 > | cross_correlation (const MultiArray< T, N > &a, const MultiArray< T, M > &b) |
| | 互相关。
|
| uint64_t | mod_mul (uint64_t a, uint64_t b, uint64_t mod) noexcept |
| | 使用二进制加法模拟模乘。
|
| uint64_t | mod_pow (uint64_t a, uint64_t b, uint64_t mod) noexcept |
| | 模幂运算。
|
| bool | miller_rabin_test (uint64_t n, uint64_t a) noexcept |
| | 单次 Miller-Rabin 素性测试。
|
| bool | is_prime (uint64_t n) noexcept |
| | 确定性素数判定。
|
| std::mt19937 & | thread_rng () |
| | 获取一个全局的、以当前时间戳为种子的 Mersenne Twister 随机数引擎。
|
| template<class T> |
| void | seed (T seed) |
| | 修改 thread_rng 提供的随机数引擎的种子。
|
| template<class T = int> |
| T | randint (T min=0, T max=32767, std::mt19937 &gen=thread_rng()) |
| | 生成一个指定范围内的随机整数(均匀分布)。
|
| template<class T = double> |
| T | uniform (T min=0.0, T max=1.0, std::mt19937 &gen=thread_rng()) |
| | 生成一个指定范围内的随机浮点数(均匀分布)。
|
| bool | randbool (double p=0.5, std::mt19937 &gen=thread_rng()) |
| | 生成一个服从伯努利分布(Bernoulli Distribution)的随机布尔值。
|
| template<class C> |
| auto | choice (C &c, std::mt19937 &gen=thread_rng()) -> decltype(*std::begin(c)) |
| | 从容器中随机选择一个元素(左值版本,返回引用)。
|
| template<class C> |
| auto | choice (const C &c, std::mt19937 &gen=thread_rng()) -> decltype(*std::begin(c)) |
| | 从容器中随机选择一个元素(常量左值版本,返回 const 引用)。
|
| template<class C> |
| auto | choice (C &&c, std::mt19937 &gen=thread_rng()) -> decltype(*std::begin(c)) |
| | 从容器中随机选择一个元素(右值版本,返回值)。
|
| template<class T> |
| T | choice (std::initializer_list< T > init, std::mt19937 &gen=thread_rng()) |
| | 从 std::initializer_list 中随机选择一个元素(重载版本)。
|
| template<class C> |
| void | shuffle (C &&c, std::mt19937 &gen=thread_rng()) |
| | 随机打乱容器中元素的顺序(Fisher-Yates 洗牌算法)。
|
| template<class T = double> |
| std::vector< T > | rnorm (size_t n, T mean=0.0, T sd=1.0, std::mt19937 &gen=thread_rng()) |
| | 生成 n 个服从正态分布(Normal Distribution)的随机数。
|
| template<class T = double> |
| std::vector< T > | runif (size_t n, T min=0.0, T max=1.0, std::mt19937 &gen=thread_rng()) |
| | 生成 n 个服从均匀分布(Uniform Distribution)的随机数。
|
| template<class T = int> |
| std::vector< T > | rbinom (size_t n, T size, double prob, std::mt19937 &gen=thread_rng()) |
| | 生成 n 个服从二项分布(Binomial Distribution)的随机数。
|
| template<class T = int> |
| std::vector< T > | rpois (size_t n, double lambda, std::mt19937 &gen=thread_rng()) |
| | 生成 n 个服从泊松分布(Poisson Distribution)的随机数。
|
| template<class T = double> |
| std::vector< T > | rexp (size_t n, T rate=1.0, std::mt19937 &gen=thread_rng()) |
| | 生成 n 个服从指数分布(Exponential Distribution)的随机数。
|
| template<class T = double> |
| std::vector< T > | rgamma (size_t n, T shape, T rate=1.0, std::mt19937 &gen=thread_rng()) |
| | 生成 n 个服从伽马分布(Gamma Distribution)的随机数。
|
| template<class T = double> |
| std::vector< T > | rbeta (size_t n, T shape1, T shape2, std::mt19937 &gen=thread_rng()) |
| | 生成 n 个服从贝塔分布(Beta Distribution)的随机数。
|
| template<class T = double> |
| std::vector< T > | rchisq (size_t n, T df, std::mt19937 &gen=thread_rng()) |
| | 生成 n 个服从卡方分布(Chi-squared Distribution)的随机数。
|
| template<class T = double> |
| std::vector< T > | rt (size_t n, T df, std::mt19937 &gen=thread_rng()) |
| | 生成 n 个服从 t 分布(Student's t-distribution)的随机数。
|
| template<class T = double> |
| std::vector< T > | rf (size_t n, T df1, T df2, std::mt19937 &gen=thread_rng()) |
| | 生成 n 个服从 F 分布(Fisher–Snedecor F-distribution)的随机数。
|
| template<class T = double> |
| std::vector< T > | rlnorm (size_t n, T meanlog=0.0, T sdlog=1.0, std::mt19937 &gen=thread_rng()) |
| | 生成 n 个服从对数正态分布(Lognormal Distribution)的随机数。
|
| template<class T = double> |
| std::vector< T > | rweibull (size_t n, T shape, T scale=1.0, std::mt19937 &gen=thread_rng()) |
| | 生成 n 个服从韦布尔分布(Weibull Distribution)的随机数。
|
| template<class C> |
| std::vector< typename C::value_type > | sample (const C &c, size_t size, bool replace=false, std::mt19937 &gen=thread_rng()) |
| | 从容器中随机抽取指定数量的元素(有放回或无放回)。
|
| template<class T> |
| std::vector< T > | sample (std::initializer_list< T > init, size_t size, bool replace=false, std::mt19937 &gen=thread_rng()) |
| | 从 std::initializer_list 中随机抽样(重载版本)。
|
| template<typename... Args> |
| std::string | format (const std::string &fmt, const Args &...args) |
| | 格式化字符串(char 版)。
|
| template<typename... Args> |
| std::wstring | format (const std::wstring &fmt, const Args &...args) |
| | 格式化字符串(wchar_t 版)。
|
| std::string | tiname_impl (const std::type_info &ti) |
| | 获取类型信息的可读名称(跨平台 demangle),返回 std::string。
|
| std::string | tiname (const std::type_info &ti) |
| | tiname_impl 的 char 版别名。
|
| std::wstring | wtiname (const std::type_info &ti) |
| | tiname_impl 的 wchar_t 版。
|
| template<class T, class CharT = char, class Traits = std::char_traits<CharT>> |
| std::enable_if< is_string< typenamestd::decay< T >::type >::value >::type | repr (T &&value, std::basic_ostream< CharT, Traits > &os=std::cout) |
| | 输出字符串类型(std::string, const char* 等)的表示,带双引号。
|
| template<class T, class CharT = char, class Traits = std::char_traits<CharT>> |
| std::enable_if< is_char< typenamestd::decay< T >::type >::value >::type | repr (T &&value, std::basic_ostream< CharT, Traits > &os=std::cout) |
| | 输出字符类型的表示,带单引号。
|
| template<class T, class CharT = char, class Traits = std::char_traits<CharT>> |
| std::enable_if< std::is_same< typenamestd::decay< T >::type, bool >::value >::type | repr (T &&value, std::basic_ostream< CharT, Traits > &os=std::cout) |
| | 输出布尔值的表示("true" 或 "false")。
|
| template<class T, class CharT = char, class Traits = std::char_traits<CharT>> |
| std::enable_if< std::is_same< typenamestd::decay< T >::type, std::nullptr_t >::value >::type | repr (T &&, std::basic_ostream< CharT, Traits > &os=std::cout) |
| | 输出 nullptr 的表示。
|
| template<class CharT, class Traits, class Ret, class... Args> |
| void | repr (Ret(*f)(Args...), std::basic_ostream< CharT, Traits > &os=std::cout) |
| | 输出函数指针的表示,格式为 "<function at 地址>"。
|
| template<class T, class CharT = char, class Traits = std::char_traits<CharT>> |
| std::enable_if<!std::is_same< typenamestd::decay< T >::type, bool >::value &&!std::is_same< typenamestd::decay< T >::type, std::nullptr_t >::value &&!is_string< typenamestd::decay< T >::type >::value &&!is_char< typenamestd::decay< T >::type >::value &&!std::is_function< typenamestd::remove_pointer< T >::type >::value &&is_basic_printable< CharT, Traits, typenamestd::decay< T >::type >::value >::type | repr (T &&value, std::basic_ostream< CharT, Traits > &os=std::cout) |
| | 输出可打印类型(定义了 operator<<)的表示,直接输出值。
|
| template<class T, class CharT = char, class Traits = std::char_traits<CharT>> |
| std::enable_if<!std::is_same< typenamestd::decay< T >::type, std::nullptr_t >::value &&!is_string< typenamestd::decay< T >::type >::value &&!is_char< typenamestd::decay< T >::type >::value &&!is_basic_printable< CharT, Traits, typenamestd::decay< T >::type >::value >::type | repr (T &&value, std::basic_ostream< CharT, Traits > &os=std::cout) |
| | 输出不可打印类型的表示,格式为 "<'类型名' object at 地址>"。
|
| template<class T, class CharT = char, class Traits = std::char_traits<CharT>> |
| void | repr (std::reference_wrapper< T > v, std::basic_ostream< CharT, Traits > &os=std::cout) |
| template<class CharT, class Traits, class Allocator> |
| std::basic_string< CharT, Traits, Allocator > | ltrim (std::basic_string< CharT, Traits, Allocator > str) |
| | 移除字符串左侧的空白字符(空格、制表符等)。
|
| template<class CharT, class Traits, class Allocator> |
| std::basic_string< CharT, Traits, Allocator > | rtrim (std::basic_string< CharT, Traits, Allocator > str) |
| | 移除字符串右侧的空白字符。
|
| template<class CharT, class Traits, class Allocator> |
| std::basic_string< CharT, Traits, Allocator > | trim (std::basic_string< CharT, Traits, Allocator > str) |
| | 移除字符串两侧的空白字符。
|
| template<class CharT, class Traits, class Allocator> |
| std::basic_string< CharT, Traits, Allocator > | ltrim (std::basic_string< CharT, Traits, Allocator > str, const std::basic_string< CharT, Traits, Allocator > &chars) |
| | 移除字符串左侧指定的字符集合。
|
| template<class CharT, class Traits, class Allocator> |
| std::basic_string< CharT, Traits, Allocator > | rtrim (std::basic_string< CharT, Traits, Allocator > str, const std::basic_string< CharT, Traits, Allocator > &chars) |
| | 移除字符串右侧指定的字符集合。
|
| template<class CharT, class Traits, class Allocator> |
| std::basic_string< CharT, Traits, Allocator > | trim (std::basic_string< CharT, Traits, Allocator > str, const std::basic_string< CharT, Traits, Allocator > &chars) |
| | 移除字符串两侧指定的字符集合。
|
| template<class CharT, class Traits, class Allocator> |
| std::basic_string< CharT, Traits, Allocator > | upper (std::basic_string< CharT, Traits, Allocator > str, const std::locale &loc=std::locale{}) |
| | 将字符串转换为大写。
|
| template<class CharT, class Traits, class Allocator> |
| std::basic_string< CharT, Traits, Allocator > | lower (std::basic_string< CharT, Traits, Allocator > str, const std::locale &loc=std::locale{}) |
| | 将字符串转换为小写。
|
| template<class CharT, class Traits, class Allocator> |
| std::basic_string< CharT, Traits, Allocator > | title (std::basic_string< CharT, Traits, Allocator > str, const std::locale &loc=std::locale{}) |
| | 将字符串转换为标题格式(每个单词首字母大写,其余小写)。
|
| template<class CharT, class Traits, class Allocator> |
| BasicPartitionResult< CharT, Traits, Allocator > | partition (const std::basic_string< CharT, Traits, Allocator > &text, const std::basic_string< CharT, Traits, Allocator > &sep) |
| | 在字符串中查找第一个分隔符,并返回分隔符之前、分隔符本身、分隔符之后的三部分。
|
| template<class CharT, class Traits, class Allocator> |
| std::vector< std::basic_string< CharT, Traits, Allocator > > | split (const std::basic_string< CharT, Traits, Allocator > &text, const std::basic_string< CharT, Traits, Allocator > &sep=std::basic_string< CharT, Traits, Allocator >(1, CharT{' '})) |
| | 以分隔符分割字符串(类似 Python 的 split,默认按空格分割)。
|
| template<class T, class CharT = char, class Traits = std::char_traits<CharT>, class Allocator = std::allocator<CharT>> |
| std::basic_string< CharT, Traits, Allocator > | join (const std::vector< T > &vec, const std::basic_string< CharT, Traits, Allocator > &sep=std::basic_string< CharT, Traits, Allocator >{}) |
| | 以分隔符连接容器中的字符串元素。
|
| std::string | ltrim (const char *str) |
| std::wstring | ltrim (const wchar_t *str) |
| std::string | rtrim (const char *str) |
| std::wstring | rtrim (const wchar_t *str) |
| std::string | trim (const char *str) |
| std::wstring | trim (const wchar_t *str) |
| std::string | ltrim (const char *str, const std::string &chars) |
| std::wstring | ltrim (const wchar_t *str, const std::wstring &chars) |
| std::string | rtrim (const char *str, const std::string &chars) |
| std::wstring | rtrim (const wchar_t *str, const std::wstring &chars) |
| std::string | trim (const char *str, const std::string &chars) |
| std::wstring | trim (const wchar_t *str, const std::wstring &chars) |
| std::string | ltrim (const char *str, const char *chars) |
| std::wstring | ltrim (const wchar_t *str, const wchar_t *chars) |
| std::string | rtrim (const char *str, const char *chars) |
| std::wstring | rtrim (const wchar_t *str, const wchar_t *chars) |
| std::string | trim (const char *str, const char *chars) |
| std::wstring | trim (const wchar_t *str, const wchar_t *chars) |
| std::string | ltrim (const std::string &str, const char *chars) |
| std::wstring | ltrim (const std::wstring &str, const wchar_t *chars) |
| std::string | rtrim (const std::string &str, const char *chars) |
| std::wstring | rtrim (const std::wstring &str, const wchar_t *chars) |
| std::string | trim (const std::string &str, const char *chars) |
| std::wstring | trim (const std::wstring &str, const wchar_t *chars) |
| std::string | upper (const char *str, const std::locale &loc=std::locale{}) |
| | 将字符串转换为大写。
|
| std::wstring | upper (const wchar_t *str, const std::locale &loc=std::locale{}) |
| | 将字符串转换为大写。
|
| std::string | lower (const char *str, const std::locale &loc=std::locale{}) |
| | 将字符串转换为小写。
|
| std::wstring | lower (const wchar_t *str, const std::locale &loc=std::locale{}) |
| | 将字符串转换为小写。
|
| std::string | title (const char *str, const std::locale &loc=std::locale{}) |
| | 将字符串转换为标题格式(每个单词首字母大写,其余小写)。
|
| std::wstring | title (const wchar_t *str, const std::locale &loc=std::locale{}) |
| | 将字符串转换为标题格式(每个单词首字母大写,其余小写)。
|
| template<class CharT, class Traits, class Allocator> |
| BasicPartitionResult< CharT, Traits, Allocator > | partition (const std::basic_string< CharT, Traits, Allocator > &text, const CharT *sep) |
| | 在字符串中查找第一个分隔符,并返回分隔符之前、分隔符本身、分隔符之后的三部分。
|
| template<class CharT, class Traits, class Allocator> |
| std::vector< std::basic_string< CharT, Traits, Allocator > > | split (const std::basic_string< CharT, Traits, Allocator > &text, const CharT *sep) |
| | 以分隔符分割字符串(类似 Python 的 split,默认按空格分割)。
|
| BasicPartitionResult | partition (const char *text, const std::string &sep) |
| | 在字符串中查找第一个分隔符,并返回分隔符之前、分隔符本身、分隔符之后的三部分。
|
| BasicPartitionResult< wchar_t > | partition (const wchar_t *text, const std::wstring &sep) |
| | 在字符串中查找第一个分隔符,并返回分隔符之前、分隔符本身、分隔符之后的三部分。
|
| std::vector< std::string > | split (const char *text, const std::string &sep=" ") |
| | 以分隔符分割字符串(类似 Python 的 split,默认按空格分割)。
|
| std::vector< std::wstring > | split (const wchar_t *text, const std::wstring &sep=L" ") |
| | 以分隔符分割字符串(类似 Python 的 split,默认按空格分割)。
|
| std::string | join (const std::vector< std::string > &items, const std::string &sep="") |
| | 以分隔符连接容器中的字符串元素。
|
| std::wstring | join (const std::vector< std::wstring > &items, const std::wstring &sep=L"") |
| | 以分隔符连接容器中的字符串元素。
|
| template<class CharT, class Traits> |
| void | to_stream (char ch, std::basic_ostream< CharT, Traits > &os) |
| | 将 ch 输出到流。
|
| template<class CharT, class Traits> |
| void | to_stream (wchar_t wch, std::basic_ostream< CharT, Traits > &os) |
| | 将 wch 输出到流。
|
| template<class Traits> |
| void | to_stream (wchar_t wch, std::basic_ostream< wchar_t, Traits > &os) |
| | 将 wch 输出到流。
|
| template<class CharT, class Traits> |
| void | to_stream (const std::string &str, std::basic_ostream< CharT, Traits > &os) |
| | 将 std::string 输出到流。
|
| template<class CharT, class Traits> |
| void | to_stream (const std::wstring &wstr, std::basic_ostream< CharT, Traits > &os) |
| | 将 std::wstring 输出到流。
|
| template<class CharT, class Traits> |
| void | to_stream (const char *str, std::basic_ostream< CharT, Traits > &os) |
| | 将 const char * 输出到流。
|
| template<class CharT, class Traits> |
| void | to_stream (const wchar_t *wstr, std::basic_ostream< CharT, Traits > &os) |
| | 将 const wchar_t * 输出到流。
|
| template<class CharT, class Traits, std::size_t N> |
| void | to_stream (char(&arr)[N], std::basic_ostream< CharT, Traits > &os) |
| template<class CharT, class Traits, std::size_t N> |
| void | to_stream (wchar_t(&arr)[N], std::basic_ostream< CharT, Traits > &os) |
| template<class CharT, class Traits, class T> |
| std::enable_if<!std::is_same< typenamestd::decay< T >::type, char >::value &&!std::is_same< typenamestd::decay< T >::type, wchar_t >::value &&!std::is_same< typenamestd::decay< T >::type, char * >::value &&!std::is_same< typenamestd::decay< T >::type, wchar_t * >::value &&!std::is_same< typenamestd::decay< T >::type, std::string >::value &&!std::is_same< typenamestd::decay< T >::type, std::wstring >::value >::type | to_stream (T &&value, std::basic_ostream< CharT, Traits > &os) |
| template<class... Args> |
| std::string | to_string (Args &&...args) |
| | 将任意多个参数转换为字符串并拼接(无分隔符)。
|
| template<class CharT, class Traits, class Allocator, class... Args> |
| void | from_string (std::basic_string< CharT, Traits, Allocator > str, Args &...args) |
| | 将字符串中的值提取到多个参数中,参数类型由调用者指定。
|
| template<class F> |
| DeferGuard< typename std::decay< F >::type > | make_defer (F &&f) |
| | 工厂函数,创建DeferGuard对象。
|
| template<class Derived, class T> |
| Generator< Derived, T >::iterator | iter (Generator< Derived, T > &g) |
| | 获取生成器迭代器的辅助函数。
|
| template<class Derived, class T> |
| T | next (typename Generator< Derived, T >::iterator &it) |
| | 从迭代器获取下一个值的辅助函数。
|
| template<class Derived, class T, class CharT = char, class Traits = std::char_traits<CharT>> |
| std::basic_ostream< CharT, Traits > & | print_generator (std::basic_ostream< CharT, Traits > &os, const Generator< Derived, T > &gen) |
| | 将 Generator 的内容输出到流,格式为 [elem1, elem2, ...]。
|
| template<class Derived, class T, class CharT = char, class Traits = std::char_traits<CharT>> |
| std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &os, const Generator< Derived, T > &gen) |
| | 输出 Generator 到流的 operator<< 重载。
|
| template<class Iter> |
| IteratorPair< Iter > | iterpair (Iter beg, Iter end) |
| | 工厂函数,构建 IteratorPair。
|
| template<class C1, class C2> |
| IteratorPair< TiedIterators< typename C1::iterator, typename C2::iterator > > | zip (C1 &c1, C2 &c2) |
| | 将两个容器“拉链”式地绑定在一起,以便同时迭代。
|
| template<class C1, class C2> |
| IteratorPair< TiedIterators< typename C1::const_iterator, typename C2::const_iterator > > | zip (const C1 &c1, const C2 &c2) |
| | 针对两个常量容器的 zip 版本。
|
| template<class C1, class C2> |
| IteratorPair< TiedIterators< typename C1::const_iterator, typename C2::iterator > > | zip (const C1 &c1, C2 &c2) |
| | 针对第一个容器为常量、第二个容器为非常量的 zip 版本。
|
| template<class C1, class C2> |
| IteratorPair< TiedIterators< typename C1::iterator, typename C2::const_iterator > > | zip (C1 &c1, const C2 &c2) |
| | 针对第一个容器为非常量、第二个容器为常量的 zip 版本。
|
| BasicLogging & | get_logger () |
| | 内部单例(char)。
|
| template<class... Ts> |
| Params< typename std::decay< Ts >::type... > | params (Ts &&...values) |
| | 便捷函数,用于构造 Params 对象。
|
| CmdResult | syscmd (const std::string &exe, const std::vector< std::string > &args={}, const std::map< std::string, std::string > &kwargs={}) |
| | 执行系统命令并捕获输出。
|
| int & | passed_count () |
| | 获取通过的测试用例数量。
|
| int & | failed_count () |
| | 获取失败的测试用例数量。
|
| void | pre_summary () |
| | 构造守卫对象,程序结束时输出摘要。
|
| std::string | ptr_to_str (const char *s) |
| | 辅助函数:安全地将 C 字符串转换为显示字符串。
|
| Time | nanoseconds (double n) |
| | 静态函数,构造纳秒。
|
| Time | microseconds (double n) |
| | 静态函数,构造微秒。
|
| Time | milliseconds (double n) |
| | 静态函数,构造毫秒。
|
| Time | seconds (double n) |
| | 静态函数,构造秒。
|
| Time | minutes (double n) |
| | 静态函数,构造分钟。
|
| Time | hours (double n) |
| | 静态函数,构造小时。
|
| Time | now () |
| | 获取当前时间点(自纪元以来的纳秒数)。
|
| Time | operator""_ns (unsigned long long ns) |
| | 纳秒字面量(整数)。
|
| Time | operator""_us (unsigned long long us) |
| | 微秒字面量(整数)。
|
| Time | operator""_ms (unsigned long long ms) |
| | 毫秒字面量(整数)。
|
| Time | operator""_s (unsigned long long s) |
| | 秒字面量(整数)。
|
| Time | operator""_min (unsigned long long min) |
| | 分钟字面量(整数)。
|
| Time | operator""_hr (unsigned long long hr) |
| | 小时字面量(整数)。
|
| Time | operator""_ns (long double ns) |
| | 纳秒字面量(浮点数)。
|
| Time | operator""_us (long double us) |
| | 微秒字面量(浮点数)。
|
| Time | operator""_ms (long double ms) |
| | 毫秒字面量(浮点数)。
|
| Time | operator""_s (long double s) |
| | 秒字面量(浮点数)。
|
| Time | operator""_min (long double min) |
| | 分钟字面量(浮点数)。
|
| Time | operator""_hr (long double hr) |
| | 小时字面量(浮点数)。
|
| template<class F, class... Args> |
| Time | timer (F &&f, Args &&...args) |
| | 测量函数调用的执行时间。
|
| void | sleep (const Time &tr) |
| | 休眠指定时间。
|
| std::string | datetime (const std::string &fmt="%Y-%m-%d %H:%M:%S") |
| | 获取当前日期时间字符串。
|
| double | fps (double target) |
| | 控制循环的帧率。
|