Console Library 4.7.0
A header-only library that makes C++ simple
Loading...
Searching...
No Matches
console Namespace Reference

本库所有组件所在的顶层命名空间。 More...

Namespaces

namespace  color
 包含控制台颜色、背景色和文本样式的 ANSI 转义序列常量。
namespace  literals
 包含自定义字面量运算符的命名空间。
namespace  ProgressStyle
namespace  re
namespace  pitches

Classes

class  Item
 可存储任意类型单个对象的类型擦除包装器。 More...
class  Box
 存储多个 Item 的异构容器。 More...
class  Comprehension
 函数式风格的数据流处理容器。 More...
class  console_error
 console 库所有异常的基类。 More...
class  fatal_logging
 表示致命日志错误,通常会导致程序终止。 More...
class  bad_format
 表示格式化字符串错误,例如占位符与参数不匹配。 More...
class  file_error
 表示文件操作错误,如打开失败、读取失败等。 More...
class  bad_get
 表示从 ItemBox 中获取类型不匹配或空值时发生的错误。 More...
class  multiarray_error
 表示 MultiArray 多维数组操作中的错误,如维度不匹配。 More...
class  container_error
 表示通用容器操作错误。 More...
class  index_error
 表示索引越界错误。 More...
class  bad_maybe_access
 表示对空的 Maybe 对象进行取值操作时抛出的异常。 More...
class  domain_error
 表示试图对无效的数学值域进行操作时抛出的异常。 More...
class  cursor_ptr
 双指针游标智能指针(非数组版本)。 More...
class  cursor_ptr< T[]>
 双指针游标智能指针(数组版本)。 More...
class  Path
 文件路径封装类,提供便捷的文件读写和路径操作。 More...
struct  InputSettings
 输入/输出流设置,用于自定义 input 函数的输入输出目标。 More...
struct  IteratorPair
 存储迭代器对,可以直接范围 for。 More...
class  TiedIterators
 绑定迭代器对,一齐迭代。 More...
class  Keyboard
 用于监视键盘键击情况的类。 More...
class  Logging
 日志记录器,支持多级别、颜色输出和自动时间戳。 More...
class  Maybe
 可选值容器,可包含一个值或为空。 More...
class  MultiArray
 编译期固定维度的多维数组。 More...
class  MultiArray< T, D >
 一维特化。 More...
class  MultiArray< T, First, Rest... >
 多维特化(维度 >= 2)。 More...
struct  TuplePrinter
 递归打印 tuple 的辅助模板(主模板)。 More...
struct  TuplePrinter< Tuple, 1 >
 递归打印 tuple 的偏特化:处理单个元素。 More...
struct  TuplePrinter< Tuple, 0 >
 递归打印 tuple 的偏特化:处理空 tuple。 More...
class  Output
 灵活的输出控制类,支持链式调用和多种参数。 More...
struct  ProgressConfig
 进度条显示配置。 More...
class  Progress
 进度条迭代器包装器,用于在遍历容器时显示进度。 More...
class  BasicRational
 用于表示分数的基础模板类。 More...
class  Regex
 正则表达式对象,封装编译后的模式,提供匹配、搜索、替换等功能。 More...
class  Screen
 用于表示虚拟屏幕的类。 More...
struct  is_container
 检测类型是否为容器(支持 std::begin 和 std::end)。 More...
struct  is_callable
 检测类型是否可作为函数对象以给定参数调用(返回 void 或可转换为 void)。 More...
struct  is_iterator
 检测类型是否为迭代器(具有 iterator_category)。 More...
struct  has_subscript
 检测类型是否支持下标操作符(如 T[Idx])。 More...
struct  is_string
 检测类型是否为字符串类型(char*、std::string、std::string_view 等)。 More...
struct  is_printable
 检测类型是否支持输出到 std::ostream(即定义了 operator<<)。 More...
struct  is_char
 检测类型是否为字符类型(char、wchar_t、char16_t、char32_t 等)。 More...
struct  uniform_distribution_impl
 取得适配分布的主模板。 More...
struct  PartitionResult
 字符串分区结果,包含左部分、分隔符、右部分。 More...
class  f_string
 格式化字符串类,支持使用 % 运算符进行占位符 {} 替换。 More...
class  Time
 表示以纳秒为单位的时间量,支持单位转换、算术运算和自动选择合适的输出单位。 More...
class  View
 容器的非拥有视图(可变版本)。 More...
class  View< const Container >
 容器的非拥有视图(常量版本)。 More...
struct  Note
 表示一个音符,包含音高、时值和力度。 More...
class  MIDI
 MIDI 输出设备控制器,支持乐器切换、音量调节、同步/异步播放音符序列。 More...

Typedefs

using Rational = BasicRational<intmax_t>
 以 intmax_t 为基的分数。
using Rational_8 = BasicRational<int8_t>
 以 int8_t 为基的分数。
using Rational_16 = BasicRational<int16_t>
 以 int16_t 为基的分数。
using Rational_32 = BasicRational<int32_t>
 以 int32_t 为基的分数。
using Rational_64 = BasicRational<int64_t>
 以 int64_t 为基的分数。
template<class T>
using enable_if_container
 启用若 T 是容器。
template<class T>
using enable_if_not_container
 启用若 T 不是容器。
template<class F, class... Args>
using enable_if_callable
 启用若 F 可以 Args... 参数调用。
template<class F, class... Args>
using enable_if_not_callable
 启用若 F 不可以 Args... 参数调用。
template<class T>
using enable_if_iterator
 启用若 T 是迭代器。
template<class T>
using enable_if_not_iterator
 启用若 T 不是迭代器。
template<class T>
using enable_if_string
 启用若 T(decay 后)是字符串类型。
template<class T>
using enable_if_not_string
 启用若 T(decay 后)不是字符串类型。
template<class T>
using enable_if_printable
 启用若 T 可打印。
template<class T>
using enable_if_not_printable
 启用若 T 不可打印。
template<class T>
using enable_if_char
 启用若 T(decay 后)是字符类型。
template<class T>
using enable_if_not_char
 启用若 T(decay 后)不是字符类型。
template<typename T>
using uniform_distribution_t = typename uniform_distribution_impl<T>::type
 取得对印类型所对应的均匀分布。

Enumerations

enum class  Key : int {
  None = 0 , A = 'A' , B , C ,
  D , E , F , G ,
  H , I , J , K ,
  L , M , N , O ,
  P , Q , R , S ,
  T , U , V , W ,
  X , Y , Z , Num0 = '0' ,
  Num1 , Num2 , Num3 , Num4 ,
  Num5 , Num6 , Num7 , Num8 ,
  Num9 , Space = ' ' , Enter = 13 , Esc = 27 ,
  Backspace = 127 , Tab = 9 , Up = 1000 , Down ,
  Left , Right , F1 , F2 ,
  F3 , F4 , F5 , F6 ,
  F7 , F8 , F9 , F10 ,
  F11 , F12
}
 用于表示常用按键的枚举。 More...
enum class  Instrument : unsigned char {
  AcousticGrandPiano = 0 , BrightAcousticPiano = 1 , ElectricGrandPiano = 2 , HonkyTonkPiano = 3 ,
  ElectricPiano1 = 4 , ElectricPiano2 = 5 , Harpsichord = 6 , Clavinet = 7 ,
  Celesta = 8 , Glockenspiel = 9 , MusicBox = 10 , Vibraphone = 11 ,
  Marimba = 12 , Xylophone = 13 , TubularBells = 14 , Dulcimer = 15 ,
  DrawbarOrgan = 16 , PercussiveOrgan = 17 , RockOrgan = 18 , ChurchOrgan = 19 ,
  ReedOrgan = 20 , Accordion = 21 , Harmonica = 22 , TangoAccordion = 23 ,
  AcousticGuitarNylon = 24 , AcousticGuitarSteel = 25 , ElectricGuitarJazz = 26 , ElectricGuitarClean = 27 ,
  ElectricGuitarMuted = 28 , OverdrivenGuitar = 29 , DistortionGuitar = 30 , GuitarHarmonics = 31 ,
  AcousticBass = 32 , ElectricBassFinger = 33 , ElectricBassPick = 34 , FretlessBass = 35 ,
  SlapBass1 = 36 , SlapBass2 = 37 , SynthBass1 = 38 , SynthBass2 = 39 ,
  Violin = 40 , Viola = 41 , Cello = 42 , Contrabass = 43 ,
  TremoloStrings = 44 , PizzicatoStrings = 45 , OrchestralHarp = 46 , Timpani = 47 ,
  StringEnsemble1 = 48 , StringEnsemble2 = 49 , SynthStrings1 = 50 , SynthStrings2 = 51 ,
  ChoirAahs = 52 , VoiceOohs = 53 , SynthVoice = 54 , OrchestraHit = 55 ,
  Trumpet = 56 , Trombone = 57 , Tuba = 58 , MutedTrumpet = 59 ,
  FrenchHorn = 60 , BrassSection = 61 , SynthBrass1 = 62 , SynthBrass2 = 63 ,
  SopranoSax = 64 , AltoSax = 65 , TenorSax = 66 , BaritoneSax = 67 ,
  Oboe = 68 , EnglishHorn = 69 , Bassoon = 70 , Clarinet = 71 ,
  Piccolo = 72 , Flute = 73 , Recorder = 74 , PanFlute = 75 ,
  BlownBottle = 76 , Shakuhachi = 77 , Whistle = 78 , Ocarina = 79 ,
  Lead1Square = 80 , Lead2Sawtooth = 81 , Lead3Calliope = 82 , Lead4Chiff = 83 ,
  Lead5Charang = 84 , Lead6Voice = 85 , Lead7Fifths = 86 , Lead8BassLead = 87 ,
  Pad1NewAge = 88 , Pad2Warm = 89 , Pad3Polysynth = 90 , Pad4Choir = 91 ,
  Pad5Bowed = 92 , Pad6Metallic = 93 , Pad7Halo = 94 , Pad8Sweep = 95 ,
  Fx1Rain = 96 , Fx2Soundtrack = 97 , Fx3Crystal = 98 , Fx4Atmosphere = 99 ,
  Fx5Brightness = 100 , Fx6Goblins = 101 , Fx7Echoes = 102 , Fx8SciFi = 103 ,
  Sitar = 104 , Banjo = 105 , Shamisen = 106 , Koto = 107 ,
  Kalimba = 108 , Bagpipe = 109 , Fiddle = 110 , Shanai = 111 ,
  TinkleBell = 112 , Agogo = 113 , SteelDrums = 114 , Woodblock = 115 ,
  TaikoDrum = 116 , MelodicTom = 117 , SynthDrum = 118 , ReverseCymbal = 119 ,
  GuitarFretNoise = 120 , BreathNoise = 121 , Seashore = 122 , BirdTweet = 123 ,
  TelephoneRing = 124 , Helicopter = 125 , Applause = 126 , Gunshot = 127
}
 128 种 GM 标准乐器编号(0-127)。 More...

Functions

template<class Cont>
auto compre (const Cont &cont) -> Comprehension< typename Cont::value_type >
 从容器(左值)创建 Comprehension。
template<class Cont>
auto compre (Cont &&cont) -> Comprehension< typename Cont::value_type >
 从容器(右值)创建 Comprehension(移动元素)。
template<class Cont>
auto compre (const Cont &cont, size_t start_pos, size_t end_pos) -> Comprehension< typename Cont::value_type >
 从容器的子区间(左值)创建 Comprehension。
template<class Cont>
auto compre (Cont &&cont, size_t start_pos, size_t end_pos) -> Comprehension< typename Cont::value_type >
 从容器的子区间(右值)创建 Comprehension(移动元素)。
template<class Iter>
auto compre (Iter beg, Iter end) -> Comprehension< decltype(*beg)>
 从迭代器对创建 Comprehension。
template<class T>
Comprehension< T > compre (std::initializer_list< T > init)
 从初始化列表创建 Comprehension。
std::string license ()
 返回 MIT 许可证全文。
std::string platform ()
 返回当前操作系统平台名称。
std::string compiler ()
 返回当前使用的编译器名称和版本。
std::string version ()
 返回库的版本字符串。
std::string author ()
 返回库的作者。
template<class T = std::string>
input (const std::string &prompt="", const InputSettings &is=inputSettings)
 从标准输入读取一个值,支持类型模板。
long double inputNumber (const std::string &prompt="Type a number: ", const InputSettings &is=inputSettings)
 读取一个 long double 类型的数字。
std::string inputLine (const std::string &prompt="Type a line string: ", const InputSettings &is=inputSettings)
 读取一整行字符串(包含空格)。
long double inputWithRange (const std::string &prompt="Type a number: ", long double min=DBL_MIN, long double max=DBL_MAX, const InputSettings &is=inputSettings)
 读取一个在指定范围内的数字。
char inputChar (const std::string &prompt="Type a character: ", const InputSettings &is=inputSettings)
 读取一个字符(忽略前导空白,但不跳过换行符?实际使用 get())。
bool inputYesOrNo (const std::string &prompt="Type yes or no: ", const InputSettings &is=inputSettings)
 读取一个 y/n 确认,返回布尔值。
std::string inputAll (const std::string &prompt="", const InputSettings &is=inputSettings)
 读取输入流中剩余的全部内容(直到 EOF)。
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 版本。
class console::Logging logger (std::clog, true, Logging::Level::INFO)
 全局默认 logger 实例,启用颜色,级别 INFO。
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>
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 (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>
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>
product (const MultiArray< T, Dims... > &arr)
 计算所有元素的乘积。
template<class T, size_t... Dims>
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>
void print_stats (std::ostream &os, const MultiArray< T, Dims... > &arr, const char *name="")
 打印数组的基本统计信息(和、均值、最小值、最大值、标准差)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > operator+ (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 元素加法(数组 + 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > operator- (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 元素减法(数组 - 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > operator* (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 元素乘法(数组 * 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > operator/ (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 元素除法(数组 / 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > operator% (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 元素取模(数组 % 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > & operator+= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 元素加法赋值(数组 += 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > & operator-= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 元素减法赋值(数组 -= 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > & operator*= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 元素乘法赋值(数组 *= 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > & operator/= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 元素除法赋值(数组 /= 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > & operator%= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 元素取模赋值(数组 %= 数组)。
template<class T, size_t... Dims>
MultiArray< bool, Dims... > operator== (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 元素相等比较(数组 == 数组),返回 bool 数组。
template<class T, size_t... Dims>
MultiArray< bool, Dims... > operator!= (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 元素不等比较(数组 != 数组)。
template<class T, size_t... Dims>
MultiArray< bool, Dims... > operator< (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 元素小于比较(数组 < 数组)。
template<class T, size_t... Dims>
MultiArray< bool, Dims... > operator> (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 元素大于比较(数组 > 数组)。
template<class T, size_t... Dims>
MultiArray< bool, Dims... > operator<= (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 元素小于等于比较(数组 <= 数组)。
template<class T, size_t... Dims>
MultiArray< bool, Dims... > operator>= (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 元素大于等于比较(数组 >= 数组)。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator+ (const MultiArray< T, Dims... > &a, const U &value)
 数组 + 标量。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator- (const MultiArray< T, Dims... > &a, const U &value)
 数组 - 标量。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator* (const MultiArray< T, Dims... > &a, const U &value)
 数组 * 标量。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator/ (const MultiArray< T, Dims... > &a, const U &value)
 数组 / 标量。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator% (const MultiArray< T, Dims... > &a, const U &value)
 数组 % 标量。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > & operator+= (MultiArray< T, Dims... > &a, const U &value)
 数组 += 标量。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > & operator-= (MultiArray< T, Dims... > &a, const U &value)
 数组 -= 标量。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > & operator*= (MultiArray< T, Dims... > &a, const U &value)
 数组 *= 标量。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > & operator/= (MultiArray< T, Dims... > &a, const U &value)
 数组 /= 标量。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > & operator%= (MultiArray< T, Dims... > &a, const U &value)
 数组 %= 标量。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator+ (const U &value, const MultiArray< T, Dims... > &a)
 标量 + 数组。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator- (const U &value, const MultiArray< T, Dims... > &a)
 标量 - 数组。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator* (const U &value, const MultiArray< T, Dims... > &a)
 标量 * 数组。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator/ (const U &value, const MultiArray< T, Dims... > &a)
 标量 / 数组。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator% (const U &value, const MultiArray< T, Dims... > &a)
 标量 % 数组。
template<class T, size_t... Dims>
MultiArray< T, Dims... > operator+ (const MultiArray< T, Dims... > &a)
 一元正号(数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > operator- (const MultiArray< T, Dims... > &a)
 一元负号(数组)。
template<class T, size_t... Dims>
MultiArray< bool, Dims... > operator! (const MultiArray< T, Dims... > &a)
 逻辑非(数组),返回 bool 数组。
template<class T, size_t... Dims>
MultiArray< T, Dims... > operator~ (const MultiArray< T, Dims... > &a)
 按位取反(数组)。
template<class T, size_t... Dims, class U>
MultiArray< bool, Dims... > operator== (const MultiArray< T, Dims... > &a, const U &value)
 数组 == 标量。
template<class T, size_t... Dims, class U>
MultiArray< bool, Dims... > operator!= (const MultiArray< T, Dims... > &a, const U &value)
 数组 != 标量。
template<class T, size_t... Dims, class U>
MultiArray< bool, Dims... > operator< (const MultiArray< T, Dims... > &a, const U &value)
 数组 < 标量。
template<class T, size_t... Dims, class U>
MultiArray< bool, Dims... > operator> (const MultiArray< T, Dims... > &a, const U &value)
 数组 > 标量。
template<class T, size_t... Dims, class U>
MultiArray< bool, Dims... > operator<= (const MultiArray< T, Dims... > &a, const U &value)
 数组 <= 标量。
template<class T, size_t... Dims, class U>
MultiArray< bool, Dims... > operator>= (const MultiArray< T, Dims... > &a, const U &value)
 数组 >= 标量。
template<class T, size_t... Dims, class U>
MultiArray< bool, Dims... > operator== (const U &value, const MultiArray< T, Dims... > &a)
 标量 == 数组。
template<class T, size_t... Dims, class U>
MultiArray< bool, Dims... > operator!= (const U &value, const MultiArray< T, Dims... > &a)
 标量 != 数组。
template<class T, size_t... Dims, class U>
MultiArray< bool, Dims... > operator< (const U &value, const MultiArray< T, Dims... > &a)
 标量 < 数组。
template<class T, size_t... Dims, class U>
MultiArray< bool, Dims... > operator> (const U &value, const MultiArray< T, Dims... > &a)
 标量 > 数组。
template<class T, size_t... Dims, class U>
MultiArray< bool, Dims... > operator<= (const U &value, const MultiArray< T, Dims... > &a)
 标量 <= 数组。
template<class T, size_t... Dims, class U>
MultiArray< bool, Dims... > operator>= (const U &value, const MultiArray< T, Dims... > &a)
 标量 >= 数组。
template<class T, size_t... Dims>
MultiArray< bool, Dims... > operator&& (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 逻辑与(数组 && 数组),返回 bool 数组。
template<class T, size_t... Dims>
MultiArray< bool, Dims... > operator|| (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 逻辑或(数组 || 数组)。
template<class T, size_t... Dims, class U>
MultiArray< bool, Dims... > operator&& (const MultiArray< T, Dims... > &a, const U &value)
 逻辑与(数组 && 标量)。
template<class T, size_t... Dims, class U>
MultiArray< bool, Dims... > operator|| (const MultiArray< T, Dims... > &a, const U &value)
 逻辑或(数组 || 标量)。
template<class T, size_t... Dims, class U>
MultiArray< bool, Dims... > operator&& (const U &value, const MultiArray< T, Dims... > &a)
 逻辑与(标量 && 数组)。
template<class T, size_t... Dims, class U>
MultiArray< bool, Dims... > operator|| (const U &value, const MultiArray< T, Dims... > &a)
 逻辑或(标量 || 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > operator& (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 按位与(数组 & 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > operator| (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 按位或(数组 | 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > operator^ (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 按位异或(数组 ^ 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > operator<< (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 左移(数组 << 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > operator>> (const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 右移(数组 >> 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > & operator&= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 按位与赋值(数组 &= 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > & operator|= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 按位或赋值(数组 |= 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > & operator^= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 按位异或赋值(数组 ^= 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > & operator<<= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 左移赋值(数组 <<= 数组)。
template<class T, size_t... Dims>
MultiArray< T, Dims... > & operator>>= (MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
 右移赋值(数组 >>= 数组)。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator& (const MultiArray< T, Dims... > &a, const U &value)
 数组 & 标量(按位与)。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator| (const MultiArray< T, Dims... > &a, const U &value)
 数组 | 标量(按位或)。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator^ (const MultiArray< T, Dims... > &a, const U &value)
 数组 ^ 标量(按位异或)。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator<< (const MultiArray< T, Dims... > &a, const U &value)
 数组 << 标量(左移)。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator>> (const MultiArray< T, Dims... > &a, const U &value)
 数组 >> 标量(右移)。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator& (const U &value, const MultiArray< T, Dims... > &a)
 标量 & 数组(按位与,对称调用)。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator| (const U &value, const MultiArray< T, Dims... > &a)
 标量 | 数组(按位或,对称调用)。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator^ (const U &value, const MultiArray< T, Dims... > &a)
 标量 ^ 数组(按位异或,对称调用)。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator<< (const U &value, const MultiArray< T, Dims... > &a)
 标量 << 数组(左移,标量左移数组每位)。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > operator>> (const U &value, const MultiArray< T, Dims... > &a)
 标量 >> 数组(右移,标量右移数组每位)。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > & operator&= (MultiArray< T, Dims... > &a, const U &value)
 数组 &= 标量(按位与赋值)。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > & operator|= (MultiArray< T, Dims... > &a, const U &value)
 数组 |= 标量(按位或赋值)。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > & operator^= (MultiArray< T, Dims... > &a, const U &value)
 数组 ^= 标量(按位异或赋值)。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > & operator<<= (MultiArray< T, Dims... > &a, const U &value)
 数组 <<= 标量(左移赋值)。
template<class T, size_t... Dims, class U>
MultiArray< T, Dims... > & operator>>= (MultiArray< T, Dims... > &a, const U &value)
 数组 >>= 标量(右移赋值)。
template<class T, size_t... Dims>
sum (const MultiArray< T, Dims... > &a)
 求和所有元素。
template<class T, size_t... Dims>
min (const MultiArray< T, Dims... > &a)
 求最小值。
template<class T, size_t... Dims>
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<size_t... OutArrDims, class VarType, size_t... InArrDims>
MultiArray< VarType, OutArrDims... > multiarray_cast (const MultiArray< VarType, InArrDims... > &inputArr)
 改变 MultiArray 的维度形状(元素类型不变),要求总元素数相同。
template<class OutType, size_t... OutArrDims, class InType, size_t... InArrDims>
MultiArray< OutType, OutArrDims... > unsafe_multiarray_cast (const MultiArray< InType, InArrDims... > &inputArr)
 不安全地改变 MultiArray 的元素类型和维度(内存拷贝)。
template<size_t... OutArrDims, class VarType, size_t... InArrDims>
MultiArray< VarType, OutArrDims... > & inplace_multiarray_cast (MultiArray< VarType, InArrDims... > &inputArr)
 就地版本的 multiarray_cast,仅视图,不拷贝(可变版本)
template<size_t... OutArrDims, class VarType, size_t... InArrDims>
const MultiArray< VarType, OutArrDims... > & inplace_multiarray_cast (const MultiArray< VarType, InArrDims... > &inputArr)
 就地版本的 multiarray_cast,仅视图,不拷贝(常量版本)
template<class T>
std::ostream & operator<< (std::ostream &, const std::vector< T > &)
 std::vector 输出声明。
template<class T>
std::ostream & operator<< (std::ostream &, const std::deque< T > &)
 std::deque 输出声明。
template<class T>
std::ostream & operator<< (std::ostream &, const std::list< T > &)
 std::list 输出声明。
template<class T>
std::ostream & operator<< (std::ostream &, const std::forward_list< T > &)
 std::forward_list 输出声明。
template<class T, size_t n>
std::ostream & operator<< (std::ostream &, const std::array< T, n > &)
 std::array 输出声明。
template<class T>
std::ostream & operator<< (std::ostream &, const std::set< T > &)
 std::set 输出声明。
template<class K, class V>
std::ostream & operator<< (std::ostream &, const std::map< K, V > &)
 std::map 输出声明。
template<class T>
std::ostream & operator<< (std::ostream &, const std::multiset< T > &)
 std::multiset 输出声明。
template<class K, class V>
std::ostream & operator<< (std::ostream &, const std::multimap< K, V > &)
 std::multimap 输出声明。
template<class T>
std::ostream & operator<< (std::ostream &, const std::unordered_set< T > &)
 std::unordered_set 输出声明。
template<class K, class V>
std::ostream & operator<< (std::ostream &, const std::unordered_map< K, V > &)
 std::unordered_map 输出声明。
template<class T>
std::ostream & operator<< (std::ostream &, const std::unordered_multiset< T > &)
 std::unordered_multiset 输出声明。
template<class K, class V>
std::ostream & operator<< (std::ostream &, const std::unordered_multimap< K, V > &)
 std::unordered_multimap 输出声明。
template<class T, class U>
std::ostream & operator<< (std::ostream &, const std::pair< T, U > &)
 std::pair 输出声明。
template<class... Args>
std::ostream & operator<< (std::ostream &, const std::tuple< Args... > &)
 std::tuple 输出声明。
template<class T>
std::ostream & operator<< (std::ostream &, const std::valarray< T > &)
 std::valarray 输出声明。
template<class Cont>
std::ostream & cont_print_sequence (std::ostream &os, const Cont &cont)
 输出序列容器(如 vector, list)的内容,格式为 [a, b, c]。
template<class Cont>
std::ostream & cont_print_set (std::ostream &os, const Cont &cont)
 输出集合容器(如 set, unordered_set)的内容,格式为 {a, b, c}。
template<class Cont>
std::ostream & cont_print_map (std::ostream &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。
template<class Cont>
auto progress (Cont &&cont, const ProgressConfig &pc={}) -> Progress< decltype(std::begin(cont))>
 创建进度条对象的辅助函数(自动推导容器类型)。
std::mt19937 & default_gen ()
 获取一个全局的、以当前时间戳为种子的 Mersenne Twister 随机数引擎。
void seed (unsigned int seed)
 修改 default_gen 提供的随机数引擎的种子。
template<class T = int>
randint (T min=0, T max=32767, std::mt19937 &gen=default_gen())
 生成一个指定范围内的随机整数(均匀分布)。
template<class T = double>
uniform (T min=0.0, T max=1.0, std::mt19937 &gen=default_gen())
 生成一个指定范围内的随机浮点数(均匀分布)。
template<class C>
auto choice (C &c, std::mt19937 &gen=default_gen()) -> decltype(*std::begin(c))
 从容器中随机选择一个元素(左值版本,返回引用)。
template<class C>
auto choice (C &&c, std::mt19937 &gen=default_gen()) -> std::remove_reference< decltype(*std::begin(c))>::type
 从容器中随机选择一个元素(右值版本,返回值)。
template<class T>
auto choice (std::initializer_list< T > init, std::mt19937 &gen=default_gen()) -> decltype(*std::begin(init))
 从 std::initializer_list 中随机选择一个元素(重载版本)。
template<class C>
void shuffle (C &&c, std::mt19937 &gen=default_gen())
 随机打乱容器中元素的顺序(Fisher-Yates 洗牌算法)。
template<class T = double>
std::vector< T > rnorm (size_t n, T mean=0.0, T sd=1.0, std::mt19937 &gen=default_gen())
 生成 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=default_gen())
 生成 n 个服从均匀分布(Uniform Distribution)的随机数。
template<class T = int>
std::vector< T > rbinom (size_t n, T size, double prob, std::mt19937 &gen=default_gen())
 生成 n 个服从二项分布(Binomial Distribution)的随机数。
template<class T = int>
std::vector< T > rpois (size_t n, double lambda, std::mt19937 &gen=default_gen())
 生成 n 个服从泊松分布(Poisson Distribution)的随机数。
template<class T = double>
std::vector< T > rexp (size_t n, T rate=1.0, std::mt19937 &gen=default_gen())
 生成 n 个服从指数分布(Exponential Distribution)的随机数。
template<class T = double>
std::vector< T > rgamma (size_t n, T shape, T rate=1.0, std::mt19937 &gen=default_gen())
 生成 n 个服从伽马分布(Gamma Distribution)的随机数。
template<class T = double>
std::vector< T > rbeta (size_t n, T shape1, T shape2, std::mt19937 &gen=default_gen())
 生成 n 个服从贝塔分布(Beta Distribution)的随机数。
template<class T = double>
std::vector< T > rchisq (size_t n, T df, std::mt19937 &gen=default_gen())
 生成 n 个服从卡方分布(Chi-squared Distribution)的随机数。
template<class T = double>
std::vector< T > rt (size_t n, T df, std::mt19937 &gen=default_gen())
 生成 n 个服从 t 分布(Student's t-distribution)的随机数。
template<class T = double>
std::vector< T > rf (size_t n, T df1, T df2, std::mt19937 &gen=default_gen())
 生成 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=default_gen())
 生成 n 个服从对数正态分布(Lognormal Distribution)的随机数。
template<class T = double>
std::vector< T > rweibull (size_t n, T shape, T scale=1.0, std::mt19937 &gen=default_gen())
 生成 n 个服从韦布尔分布(Weibull Distribution)的随机数。
template<class C>
auto sample (C &&c, size_t size, bool replace=false, std::mt19937 &gen=default_gen()) -> std::vector< typename std::iterator_traits< decltype(std::begin(c))>::value_type >
 从容器中随机抽取指定数量的元素(有放回或无放回)。
template<class T>
std::vector< T > sample (std::initializer_list< T > init, size_t size, bool replace=false, std::mt19937 &gen=default_gen())
 从 std::initializer_list 中随机抽样(重载版本)。
std::string tiname (const std::type_info &ti)
 获取类型信息的可读名称(跨平台 demangle)。
template<class T>
enable_if_string< T > repr (T &&value, std::ostream &os=std::cout)
 输出字符串类型(std::string, const char* 等)的表示,带双引号。
template<class T>
enable_if_char< T > repr (T &&value, std::ostream &os=std::cout)
 输出字符类型的表示,带单引号。
template<class T>
std::enable_if< std::is_same< typenamestd::decay< T >::type, bool >::value >::type repr (T &&value, std::ostream &os=std::cout)
 输出布尔值的表示("true" 或 "false")。
template<class T>
std::enable_if< std::is_same< typenamestd::decay< T >::type, std::nullptr_t >::value >::type repr (T &&, std::ostream &os=std::cout)
 输出 nullptr 的表示。
template<class Ret, class... Args>
void repr (Ret(*f)(Args...), std::ostream &os=std::cout)
 输出函数指针的表示,格式为 "<function at 地址>"。
template<class T>
std::enable_if<!std::is_same< typenamestd::decay< T >::type, bool >::value &&!is_string< typenamestd::decay< T >::type >::value &&!is_char< typenamestd::decay< T >::type >::value &&!std::is_function< typenamestd::decay< T >::type >::value &&is_printable< typenamestd::decay< T >::type >::value >::type repr (T &&value, std::ostream &os=std::cout)
 输出可打印类型(定义了 operator<<)的表示,直接输出值。
template<class T>
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_printable< typenamestd::decay< T >::type >::value >::type repr (T &&value, std::ostream &os=std::cout)
 输出不可打印类型的表示,格式为 "<类型名 object at 地址>"。
std::string ltrim (std::string str)
 移除字符串左侧的空白字符(空格、制表符等)。
std::string rtrim (std::string str)
 移除字符串右侧的空白字符。
std::string trim (std::string str)
 移除字符串两侧的空白字符。
std::string ltrim (std::string str, const std::string &chars)
 移除字符串左侧指定的字符集合。
std::string rtrim (std::string str, const std::string &chars)
 移除字符串右侧指定的字符集合。
std::string trim (std::string str, const std::string &chars)
 移除字符串两侧指定的字符集合。
std::string upper (std::string str)
 将字符串转换为大写。
std::string lower (std::string str)
 将字符串转换为小写。
std::string title (std::string str)
 将字符串转换为标题格式(每个单词首字母大写,其余小写)。
PartitionResult partition (const std::string &text, const std::string &sep)
 在字符串中查找第一个分隔符,并返回分隔符之前、分隔符本身、分隔符之后的三部分。
std::vector< std::string > split (std::string text, const std::string &sep=" ")
 以分隔符分割字符串(类似 Python 的 split,默认按空格分割)。
template<class T>
std::string join (const std::vector< T > &vec, const std::string &sep="")
 以分隔符连接容器中的字符串元素。
template<class... Args>
std::string uni_to_str (Args &&...args)
 将任意多个参数转换为字符串并拼接(无分隔符)。
Time now ()
 获取当前时间点(自纪元以来的纳秒数)。
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)
 控制循环的帧率。
std::ostream & operator<< (std::ostream &os, const View< std::string > &sv)
 输出 std::string 视图的内容(直接输出字符串,不添加额外格式)。
template<class T>
std::ostream & operator<< (std::ostream &os, const View< T > &v)
 输出任意视图的内容(通过 collect() 转为容器后输出)。
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< std::vector< T > > make_view (T *begin, T *end)
 从指针对创建视图(可变版本)。
template<class T>
View< const std::vector< T > > make_view (const T *begin, const T *end)
 从指针对创建视图(常量版本)。

Variables

static constexpr char meta [] = "CONSOLE-LIB-2026-5-4"
struct console::InputSettings cout
struct console::InputSettings cin
 全局默认输入设置
struct { 
nothing
 空状态标记对象,用于显式构造空的 Maybe。
class console::Output print
 全局输出对象,模仿 Python 的 print 函数。

Detailed Description

本库所有组件所在的顶层命名空间。

Typedef Documentation

◆ Rational

using console::Rational = BasicRational<intmax_t>

以 intmax_t 为基的分数。

◆ Rational_16

以 int16_t 为基的分数。

◆ Rational_32

以 int32_t 为基的分数。

◆ Rational_64

以 int64_t 为基的分数。

◆ Rational_8

以 int8_t 为基的分数。

Enumeration Type Documentation

◆ Instrument

enum class console::Instrument : unsigned char
strong

128 种 GM 标准乐器编号(0-127)。

枚举值与 MIDI 程序变更号对应,默认乐器为 AcousticGrandPiano。

Enumerator
AcousticGrandPiano 

大钢琴 (默认)

BrightAcousticPiano 

明亮的钢琴

ElectricGrandPiano 

电子大钢琴

HonkyTonkPiano 

酒吧钢琴

ElectricPiano1 

电钢琴 1

ElectricPiano2 

电钢琴 2

Harpsichord 

大键琴

Clavinet 

击弦古钢琴

Celesta 

钢片琴

Glockenspiel 

钟琴

MusicBox 

八音盒

Vibraphone 

颤音琴

Marimba 

马林巴

Xylophone 

木琴

TubularBells 

管钟

Dulcimer 

扬琴

DrawbarOrgan 

拉杆风琴

PercussiveOrgan 

打击型风琴

RockOrgan 

摇滚风琴

ChurchOrgan 

教堂风琴

ReedOrgan 

簧风琴

Accordion 

手风琴

Harmonica 

口琴

TangoAccordion 

探戈手风琴

AcousticGuitarNylon 

尼龙弦吉他

AcousticGuitarSteel 

钢弦吉他

ElectricGuitarJazz 

爵士吉他

ElectricGuitarClean 

清音电吉他

ElectricGuitarMuted 

闷音吉他

OverdrivenGuitar 

过载吉他

DistortionGuitar 

失真吉他

GuitarHarmonics 

吉他泛音

AcousticBass 

原声贝司

ElectricBassFinger 

指拨电贝司

ElectricBassPick 

拨片电贝司

FretlessBass 

无品贝司

SlapBass1 

击弦贝司 1

SlapBass2 

击弦贝司 2

SynthBass1 

合成贝司 1

SynthBass2 

合成贝司 2

Violin 

小提琴

Viola 

中提琴

Cello 

大提琴

Contrabass 

低音提琴

TremoloStrings 

弦乐颤音

PizzicatoStrings 

弦乐拨奏

OrchestralHarp 

竖琴

Timpani 

定音鼓

StringEnsemble1 

弦乐合奏 1

StringEnsemble2 

弦乐合奏 2

SynthStrings1 

合成弦乐 1

SynthStrings2 

合成弦乐 2

ChoirAahs 

合唱 "啊"

VoiceOohs 

人声 "哦"

SynthVoice 

合成人声

OrchestraHit 

乐队打击乐

Trumpet 

小号

Trombone 

长号

Tuba 

大号

MutedTrumpet 

弱音小号

FrenchHorn 

圆号

BrassSection 

铜管组

SynthBrass1 

合成铜管 1

SynthBrass2 

合成铜管 2

SopranoSax 

高音萨克斯

AltoSax 

中音萨克斯

TenorSax 

次中音萨克斯

BaritoneSax 

上低音萨克斯

Oboe 

双簧管

EnglishHorn 

英国管

Bassoon 

巴松管

Clarinet 

单簧管

Piccolo 

短笛

Flute 

长笛

Recorder 

竖笛

PanFlute 

排箫

BlownBottle 

吹瓶口

Shakuhachi 

尺八

Whistle 

口哨

Ocarina 

奥卡雷纳

Lead1Square 

方波领奏

Lead2Sawtooth 

锯齿波领奏

Lead3Calliope 

汽笛风琴

Lead4Chiff 

气声领奏

Lead5Charang 

炭精吉他

Lead6Voice 

人声领奏

Lead7Fifths 

五度领奏

Lead8BassLead 

贝司领奏

Pad1NewAge 

新世纪背景

Pad2Warm 

温暖背景

Pad3Polysynth 

复音合成背景

Pad4Choir 

合唱背景

Pad5Bowed 

弓弦背景

Pad6Metallic 

金属背景

Pad7Halo 

光环背景

Pad8Sweep 

扫弦背景

Fx1Rain 

雨声

Fx2Soundtrack 

电影配乐

Fx3Crystal 

水晶

Fx4Atmosphere 

大气

Fx5Brightness 

明亮

Fx6Goblins 

小妖

Fx7Echoes 

回声

Fx8SciFi 

科幻

Sitar 

西塔琴

Banjo 

班卓琴

Shamisen 

三味线

Koto 

古筝

Kalimba 

卡林巴

Bagpipe 

风笛

Fiddle 

民间提琴

Shanai 

唢呐

TinkleBell 

铃铛

Agogo 

阿果果铃

SteelDrums 

钢鼓

Woodblock 

木鱼

TaikoDrum 

太鼓

MelodicTom 

旋律通鼓

SynthDrum 

合成鼓

ReverseCymbal 

反奏钹

GuitarFretNoise 

吉他擦弦声

BreathNoise 

呼吸声

Seashore 

海浪

BirdTweet 

鸟鸣

TelephoneRing 

电话铃

Helicopter 

直升机

Applause 

掌声

Gunshot 

枪声

◆ Key

enum class console::Key : int
strong

用于表示常用按键的枚举。

Enumerator
None 
Num0 
Num1 
Num2 
Num3 
Num4 
Num5 
Num6 
Num7 
Num8 
Num9 
Space 
Enter 
Esc 
Backspace 
Tab 
Up 
Down 
Left 
Right 
F1 
F2 
F3 
F4 
F5 
F6 
F7 
F8 
F9 
F10 
F11 
F12 

Function Documentation

◆ author()

std::string console::author ( )
inline

返回库的作者。

Returns
std::string "MrXie1109"。

◆ compiler()

std::string console::compiler ( )
inline

返回当前使用的编译器名称和版本。

支持 GCC(版本号)、MSVC(版本号)、Clang(仅名称)以及其他。

Returns
std::string 编译器信息。

◆ compre() [1/6]

template<class Cont>
auto console::compre ( const Cont & cont) -> Comprehension< typename Cont::value_type >

从容器(左值)创建 Comprehension。

Template Parameters
Cont容器类型。
Parameters
cont源容器(左值)。
Returns
Comprehension<typename Cont::value_type> 新构造的 Comprehension。

◆ compre() [2/6]

template<class Cont>
auto console::compre ( const Cont & cont,
size_t start_pos,
size_t end_pos ) -> Comprehension< typename Cont::value_type >

从容器的子区间(左值)创建 Comprehension。

Template Parameters
Cont容器类型。
Parameters
cont源容器(左值)。
start_pos起始索引。
end_pos结束索引。
Returns
Comprehension<typename Cont::value_type> 新构造的 Comprehension。

◆ compre() [3/6]

template<class Cont>
auto console::compre ( Cont && cont) -> Comprehension< typename Cont::value_type >

从容器(右值)创建 Comprehension(移动元素)。

Template Parameters
Cont容器类型。
Parameters
cont源容器(右值)。
Returns
Comprehension<typename Cont::value_type> 新构造的 Comprehension。

◆ compre() [4/6]

template<class Cont>
auto console::compre ( Cont && cont,
size_t start_pos,
size_t end_pos ) -> Comprehension< typename Cont::value_type >

从容器的子区间(右值)创建 Comprehension(移动元素)。

Template Parameters
Cont容器类型。
Parameters
cont源容器(右值)。
start_pos起始索引。
end_pos结束索引。
Returns
Comprehension<typename Cont::value_type> 新构造的 Comprehension。

◆ compre() [5/6]

template<class Iter>
auto console::compre ( Iter beg,
Iter end ) -> Comprehension< decltype(*beg)>

从迭代器对创建 Comprehension。

Template Parameters
Iter迭代器类型。
Parameters
beg起始迭代器。
end结束迭代器。
Returns
Comprehension<decltype(*beg)> 新构造的 Comprehension。

◆ compre() [6/6]

template<class T>
Comprehension< T > console::compre ( std::initializer_list< T > init)

从初始化列表创建 Comprehension。

Template Parameters
T元素类型。
Parameters
init初始化列表。
Returns
Comprehension<T> 新构造的 Comprehension。

◆ datetime()

std::string console::datetime ( const std::string & fmt = "%Y-%m-%d %H:%M:%S")

获取当前日期时间字符串。

Parameters
fmt格式化字符串,默认为 "%Y-%m-%d %H:%M:%S"。
Returns
std::string 格式化后的日期时间字符串。

格式化语法与 std::put_time 相同。

◆ fps()

double console::fps ( double target)

控制循环的帧率。

Parameters
target目标帧率。
Returns
double 实际帧率。

◆ input()

template<class T = std::string>
T console::input ( const std::string & prompt = "",
const InputSettings & is = inputSettings )

从标准输入读取一个值,支持类型模板。

Template Parameters
T要读取的类型,默认为 std::string。
Parameters
prompt显示给用户的提示字符串。
is输入设置(默认使用全局 inputSettings)。
Returns
T 读取的值。
Note
若输入失败(如类型不匹配),会清空错误状态并重新提示,直到成功。

◆ inputAll()

std::string console::inputAll ( const std::string & prompt = "",
const InputSettings & is = inputSettings )

读取输入流中剩余的全部内容(直到 EOF)。

Parameters
prompt提示字符串(默认为空)。
is输入设置。
Returns
std::string 从当前位置到流末尾的所有字符。
Note
常用于读取多行输入,直到用户输入 EOF(Ctrl+Z/Ctrl+D)。

◆ inputChar()

char console::inputChar ( const std::string & prompt = "Type a character: ",
const InputSettings & is = inputSettings )

读取一个字符(忽略前导空白,但不跳过换行符?实际使用 get())。

Parameters
prompt提示字符串(默认为 "Type a character: ")。
is输入设置。
Returns
char 读取的第一个字符(包括空白字符?实际 istream::get() 不会跳过空白)。
Note
此函数使用 is.is.get(),不会跳过空白字符,注意与格式化输入的区别。

◆ inputLine()

std::string console::inputLine ( const std::string & prompt = "Type a line string: ",
const InputSettings & is = inputSettings )

读取一整行字符串(包含空格)。

Parameters
prompt提示字符串(默认为 "Type a line string: ")。
is输入设置。
Returns
std::string 读取的行(不含换行符)。

◆ inputNumber()

long double console::inputNumber ( const std::string & prompt = "Type a number: ",
const InputSettings & is = inputSettings )

读取一个 long double 类型的数字。

Parameters
prompt提示字符串(默认为 "Type a number: ")。
is输入设置。
Returns
long double 读取的数字。

◆ inputWithRange()

long double console::inputWithRange ( const std::string & prompt = "Type a number: ",
long double min = DBL_MIN,
long double max = DBL_MAX,
const InputSettings & is = inputSettings )

读取一个在指定范围内的数字。

Parameters
prompt提示字符串(默认为 "Type a number: ")。
min最小值(包含)。
max最大值(包含)。
is输入设置。
Returns
long double 验证后的数字。
Note
若输入超出范围,会输出错误信息并重新提示。

◆ inputYesOrNo()

bool console::inputYesOrNo ( const std::string & prompt = "Type yes or no: ",
const InputSettings & is = inputSettings )

读取一个 y/n 确认,返回布尔值。

Parameters
prompt提示字符串(默认为 "Type yes or no: ")。
is输入设置。
Returns
bool true 若输入 'Y' 或 'y',false 若输入 'N' 或 'n'。
Note
若输入其他字符,会提示重新输入。

◆ iterpair()

template<class Iter>
IteratorPair< Iter > console::iterpair ( Iter beg,
Iter end )

工厂函数,构建 IteratorPair。

Template Parameters
Iter迭代器类型。
Parameters
beg首迭代器。
end超尾迭代器。

◆ license()

std::string console::license ( )
inline

返回 MIT 许可证全文。

Returns
std::string 许可证文本。

◆ logger()

class console::Logging console::logger ( std::clog ,
true ,
Logging::Level::INFO  )

全局默认 logger 实例,启用颜色,级别 INFO。

◆ now()

Time console::now ( )

获取当前时间点(自纪元以来的纳秒数)。

Returns
Time 当前时间点。

◆ operator<<() [1/2]

std::ostream & console::operator<< ( std::ostream & os,
const View< std::string > & sv )

输出 std::string 视图的内容(直接输出字符串,不添加额外格式)。

Parameters
os输出流。
sv字符串视图。
Returns
std::ostream& 流引用。

◆ operator<<() [2/2]

template<class T>
std::ostream & console::operator<< ( std::ostream & os,
const View< T > & v )

输出任意视图的内容(通过 collect() 转为容器后输出)。

Template Parameters
T视图的元素类型(实际上为容器类型)。
Parameters
os输出流。
v视图对象。
Returns
std::ostream& 流引用。
Warning
有性能开销。

◆ platform()

std::string console::platform ( )
inline

返回当前操作系统平台名称。

根据预定义宏识别 Windows、Linux、macOS 或 Unknown。

Returns
std::string 平台名称。

◆ progress()

template<class Cont>
auto console::progress ( Cont && cont,
const ProgressConfig & pc = {} ) -> Progress< decltype(std::begin(cont))>

创建进度条对象的辅助函数(自动推导容器类型)。

Template Parameters
Cont容器类型(支持转发引用)。
Parameters
cont容器(左值或右值)。
pc进度条配置,默认为默认配置。
Returns
Progress<decltype(std::begin(cont))> 进度条对象。

使用示例:

std::vector<int> v(100);
for (auto& x : progress(v)) {
// 处理 x
}
auto progress(Cont &&cont, const ProgressConfig &pc={}) -> Progress< decltype(std::begin(cont))>
创建进度条对象的辅助函数(自动推导容器类型)。
Definition progress.h:296

◆ repr() [1/5]

template<class T>
std::enable_if< std::is_same< typenamestd::decay< T >::type, std::nullptr_t >::value >::type console::repr ( T && ,
std::ostream & os = std::cout )

输出 nullptr 的表示。

Template Parameters
T必须是 std::nullptr_t。
Parameters
valuenullptr。
os输出流。

◆ repr() [2/5]

template<class T>
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_printable< typenamestd::decay< T >::type >::value >::type console::repr ( T && value,
std::ostream & os = std::cout )

输出不可打印类型的表示,格式为 "<类型名 object at 地址>"。

Template Parameters
T类型条件:不是 nullptr,不是字符串,不是字符,且 is_printable<T>::value 为 false。
Parameters
value要输出的对象。
os输出流。

◆ repr() [3/5]

template<class T>
std::enable_if<!std::is_same< typenamestd::decay< T >::type, bool >::value &&!is_string< typenamestd::decay< T >::type >::value &&!is_char< typenamestd::decay< T >::type >::value &&!std::is_function< typenamestd::decay< T >::type >::value &&is_printable< typenamestd::decay< T >::type >::value >::type console::repr ( T && value,
std::ostream & os = std::cout )

输出可打印类型(定义了 operator<<)的表示,直接输出值。

Template Parameters
T类型条件:不是 bool,不是字符串,不是字符,不是函数指针,且 is_printable<T>::value 为 true。
Parameters
value要输出的值。
os输出流。

◆ repr() [4/5]

template<class T>
std::enable_if< std::is_same< typenamestd::decay< T >::type, bool >::value >::type console::repr ( T && value,
std::ostream & os = std::cout )

输出布尔值的表示("true" 或 "false")。

Template Parameters
T必须是 bool 类型。
Parameters
value布尔值。
os输出流。

◆ repr() [5/5]

template<class T>
enable_if_char< T > console::repr ( T && value,
std::ostream & os = std::cout )

输出字符类型的表示,带单引号。

Template Parameters
T字符类型(由 enable_if_char 约束)。
Parameters
value要输出的字符。
os输出流,默认为 std::cout。

◆ sleep()

void console::sleep ( const Time & tr)

休眠指定时间。

Parameters
tr要休眠的时长。

◆ timer()

template<class F, class... Args>
Time console::timer ( F && f,
Args &&... args )

测量函数调用的执行时间。

Template Parameters
F可调用对象类型。
Args参数类型包。
Parameters
f要执行的函数。
args传递给函数的参数。
Returns
Time 函数执行所花费的时间。

◆ version()

std::string console::version ( )
inline

返回库的版本字符串。

Returns
std::string 格式为 console version Major.Minor.Patch (YYYY-MM-DD) – "Commit Information"。

◆ zip() [1/4]

template<class C1, class C2>
IteratorPair< TiedIterators< typename C1::iterator, typename C2::iterator > > console::zip ( C1 & c1,
C2 & c2 )

将两个容器“拉链”式地绑定在一起,以便同时迭代。

返回一个 IteratorPair,其中包含一个特殊的 TiedIterators 迭代器对。 当使用范围 for 循环遍历时,每次迭代将同时从两个容器中各取出一个元素, 并以 std::pair 的形式返回。 循环会在较短的容器遍历完毕后自动结束。

Template Parameters
C1第一个容器的类型(自动推导)。
C2第二个容器的类型(自动推导)。
Parameters
c1第一个容器(左值,非常量)。
c2第二个容器(左值,非常量)。
Returns
IteratorPair<TiedIterators<C1::iterator, C2::iterator>> 一个可用于范围 for 循环的迭代器对。
Note
等效操作类似 Python 的 zip 函数。
Warning
返回的迭代器对中存储的是原始容器的引用,请确保容器的生命周期长于迭代器的使用。

◆ zip() [2/4]

template<class C1, class C2>
IteratorPair< TiedIterators< typename C1::iterator, typename C2::const_iterator > > console::zip ( C1 & c1,
const C2 & c2 )

针对第一个容器为非常量、第二个容器为常量的 zip 版本。

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters
c1第一个非常量容器。
c2第二个常量容器。

◆ zip() [3/4]

template<class C1, class C2>
IteratorPair< TiedIterators< typename C1::const_iterator, typename C2::iterator > > console::zip ( const C1 & c1,
C2 & c2 )

针对第一个容器为常量、第二个容器为非常量的 zip 版本。

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters
c1第一个常量容器。
c2第二个非常量容器。

◆ zip() [4/4]

template<class C1, class C2>
IteratorPair< TiedIterators< typename C1::const_iterator, typename C2::const_iterator > > console::zip ( const C1 & c1,
const C2 & c2 )

针对两个常量容器的 zip 版本。

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters
c1第一个常量容器。
c2第二个常量容器。

Variable Documentation

◆ cin

struct console::InputSettings console::cin

全局默认输入设置

◆ cout

struct console::InputSettings console::cout

◆ meta

char console::meta[] = "CONSOLE-LIB-2026-5-4"
staticconstexpr

◆ [struct]

struct { ... } console::nothing

空状态标记对象,用于显式构造空的 Maybe。

使用 nothing 可以清空 Maybe 或构造一个空 Maybe。

◆ print

class console::Output console::print

全局输出对象,模仿 Python 的 print 函数。