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

Classes

class  algorithm_t
 创建一个算法适配器。 More...
class  Chain
 链式生成器,将两个生成器首尾连接。 More...
class  Chunk
 分块生成器,将元素按块分组。 More...
class  chunk_t
 分块适配器(用于管道操作符)。 More...
class  collect
 容器收集适配器。 More...
class  Counter
 计数器生成器,生成递增或递减的序列。 More...
class  Cycle
 循环生成器,无限循环遍历给定列表。 More...
class  Debug
 调试生成器,打印每个元素的值。 More...
class  debug_t
 调试适配器(用于管道操作符)。 More...
class  Drop
 跳过前n个元素的生成器适配器。 More...
class  drop_t
 跳过前n个元素适配器(用于管道操作符)。 More...
class  drop_until_t
 跳过元素直到谓词成立适配器(用于管道操作符)。 More...
class  drop_while_t
 跳过前若干个元素适配器(用于管道操作符)。 More...
class  DropUntil
 跳过元素直到谓词成立(跳过第一个满足条件的元素)。 More...
class  DropWhile
 跳过前若干个元素直到谓词不成立。 More...
class  Enumerate
 枚举生成器,为每个元素附加索引。 More...
class  enumerate_t
 枚举生成器,为每个元素附加索引。 More...
class  FileChunks
 文件块生成器,按固定大小读取文件块。 More...
class  FileLines
 文件行生成器,逐行读取文本文件。 More...
class  Filter
 过滤生成器,只保留满足谓词的元素。 More...
class  filter_t
 过滤适配器(用于管道操作符)。 More...
class  Generate
 生成器,通过反复调用函数生成无限序列。 More...
class  List
 用书数据的序列,从初始化列表构造。 More...
class  Map
 映射生成器,对源生成器的每个元素应用函数。 More...
class  map_t
 映射适配器(用于管道操作符)。 More...
class  Pipeline
 管道类模板,用于组合多个适配器。 More...
class  Pipeline< Op >
 单适配器管道特化。 More...
class  Pipeline< Op, Rest... >
 多适配器管道特化。 More...
struct  pipeline_t
 管道适配器类,用于支持管道操作符。 More...
class  Random
 随机数生成器,生成指定范围内的随机数。 More...
class  Range
 范围生成器,生成从start到end的等差数列。 More...
class  reduce_t
 归约适配器,将生成器所有元素归约为单个值。 More...
class  Repeat
 重复生成器,重复生成同一个值指定次数。 More...
class  Scan
class  scan_t
class  step_by_t
 步进适配器(用于管道操作符)。 More...
class  StepBy
 步进生成器,按指定步长跳过元素。 More...
class  Take
 取前n个元素的生成器适配器。 More...
class  take_t
 取前n个元素适配器(用于管道操作符)。 More...
class  take_until_t
 取元素直到谓词成立适配器(用于管道操作符)。 More...
class  take_while_t
 取前若干个元素适配器(用于管道操作符)。 More...
class  TakeUntil
 取元素直到谓词成立(包含第一个满足条件的元素)。 More...
class  TakeWhile
 取得前若干个元素直到谓词不成立。 More...
class  to_t
 创建目标迭代器适配器。 More...
class  Views
 迭代器范围生成器,生成从begin到end的值。 More...
class  Window
 滑动窗口生成器,生成固定大小的滑动窗口。 More...
class  window_t
 窗口适配器(用于管道操作符)。 More...
class  Zip
 压缩生成器,将两个生成器的元素配对输出。 More...

Functions

template<class Iter>
Views< Iter > views (Iter begin, Iter end)
 从迭代器范围创建视图生成器。
template<class Container>
Views< typename Container::iterator > views (Container &container)
 从容器引用创建视图生成器。
template<class T>
List< T > list (std::initializer_list< T > list)
 从初始化列表创建列表生成器。
template<class Iterator>
List< typename std::decay< typename Iterator::value_type >::type > list (Iterator begin, Iterator end)
 从迭代器范围创建列表生成器。
template<class Container>
List< typename Container::value_type > list (Container &container)
 从容器引用创建列表生成器。
template<class T>
Range< T > range (T begin, T end, T step=1)
 创建范围生成器。
template<class T>
Range< T > range (T end)
 创建范围生成器。
template<class T>
Repeat< T > repeat (T val, size_t n)
 创建重复生成器。
template<class T>
Repeat< T > repeat (T val)
 创建重复生成器。
template<class T>
Cycle< T > cycle (std::initializer_list< T > list)
 创建循环生成器。
template<class Iterator>
Cycle< typename std::decay< typename Iterator::value_type >::type > cycle (Iterator begin, Iterator end)
 创建循环生成器。
template<class Container>
Cycle< typename Container::value_type > cycle (const Container &container)
 创建循环生成器。
template<class T>
Counter< T > counter (T start=T{0}, T step=T{1}, size_t times=size_t(-1))
 创建计数器生成器。
template<class Func>
map_t< Func > map (Func f)
 创建映射适配器。
template<class Pred>
filter_t< Pred > filter (Pred pred)
 创建过滤适配器。
take_t take (size_t n)
 创建取前n个元素适配器。
drop_t drop (size_t n)
 创建跳过前n个元素适配器。
template<class Func>
Generate< Func > generate (Func func)
 创建生成器适配器。
template<class Gen1, class Gen2>
Zip< typename std::decay< Gen1 >::type, typename std::decay< Gen2 >::type > zip (Gen1 &&g1, Gen2 &&g2)
 压缩两个生成器。
template<class Pred>
take_while_t< Pred > take_while (Pred pred)
 创建取前若干个元素适配器。
template<class Pred>
drop_while_t< Pred > drop_while (Pred pred)
 创建跳过前若干个元素适配器。
template<class Iterator>
to_t< Iterator > to (Iterator it)
 创建目标迭代器适配器。
template<class Gen1, class Gen2>
auto operator& (Gen1 &&g1, Gen2 &&g2) -> decltype(gen::zip(std::forward< Gen1 >(g1), std::forward< Gen2 >(g2)))
 按位与操作符重载,用于压缩两个生成器。
template<class Gen, class... Ops>
auto operator| (Gen gen, pipeline_t< Ops... > pl) -> decltype(pl.pipeline(gen))
 管道操作符,将管道应用到生成器。
template<class... Ops>
pipeline_t< Ops... > pipeline (Ops... ops)
 创建管道适配器。
template<class Op1, class Op2>
pipeline_t< Op1, Op2 > operator% (Op1 op1, Op2 op2)
 管道组合操作符,用于连接两个适配器。
template<class T>
Random< T > random (T min, T max, std::mt19937::result_type seed=std::random_device{}())
 创建随机数生成器。
FileLines file_lines (const std::string &filename)
 创建文件行生成器。
FileChunks file_chunks (const std::string &filename, size_t chunk_size=1024, std::ios_base::openmode mode=std::ios::in)
 创建文件块生成器。
window_t window (size_t size=16)
 创建窗口适配器。
chunk_t chunk (size_t size=16)
 创建分块适配器。
template<class Gen1, class Gen2>
Chain< Gen1, Gen2 > chain (Gen1 g1, Gen2 g2)
 创建链式生成器,将两个生成器首尾连接。
template<class Gen, class... Rest>
auto chain (Gen g, Rest... rest) -> Chain< Gen, decltype(chain(rest...))>
 创建链式生成器,将多个生成器首尾连接。
template<class Gen1, class Gen2>
Chain< Gen1, Gen2 > operator+ (Gen1 g1, Gen2 g2)
 加号操作符重载,用于连接两个生成器。
step_by_t step_by (size_t size=1)
 创建步进适配器。
debug_t debug (std::string msg="DEBUG: ", std::ostream &os=std::cout)
 创建调试适配器。
template<class Pred>
take_until_t< Pred > take_until (Pred p)
 创建取元素直到谓词成立适配器。
template<class Pred>
drop_until_t< Pred > drop_until (Pred p)
 创建跳过元素直到谓词成立适配器。
template<class T, class BinaryOp>
reduce_t< T, BinaryOp > reduce (const T &init, BinaryOp bo)
 创建归约适配器。
template<class T, class BinaryOp>
scan_t< T, BinaryOp > scan (T init, BinaryOp op)
 创建一个扫描适配器。
template<class T, class... Args>
algorithm_t< T, Args... > algorithm (T func, const Args &...args)
 创建算法适配器。

Variables

static constexpr enumerate_t enumerate

Function Documentation

◆ algorithm()

template<class T, class... Args>
algorithm_t< T, Args... > console::gen::algorithm ( T func,
const Args &... args )

创建算法适配器。

Template Parameters
T函数返回类型。
Args附加参数类型。
Parameters
func函数。
args附加参数。
Returns
算法适配器。
Note
通常来说,将此应用于此生成器库所提供的生成器时, 生成器所提供的迭代器类型是输入迭代器(InputIterator), 所以别指望能在上边应用 std::sort 之类的算法, 如果不是,比如应用于 std::vector,那您随意。

◆ chain() [1/2]

template<class Gen, class... Rest>
auto console::gen::chain ( Gen g,
Rest... rest ) -> Chain< Gen, decltype(chain(rest...))>

创建链式生成器,将多个生成器首尾连接。

Template Parameters
Gen第一个生成器类型。
...Rest其余生成器类型。
Parameters
g第一个生成器。
rest其余生成器。
Returns
Chain<Gen, decltype(chain(rest...))> 链式生成器。

◆ chain() [2/2]

template<class Gen1, class Gen2>
Chain< Gen1, Gen2 > console::gen::chain ( Gen1 g1,
Gen2 g2 )

创建链式生成器,将两个生成器首尾连接。

Template Parameters
Gen1第一个生成器类型。
Gen2第二个生成器类型。
Parameters
g1第一个生成器。
g2第二个生成器。
Returns
Chain<Gen1, Gen2> 链式生成器。

◆ chunk()

chunk_t console::gen::chunk ( size_t size = 16)
inline

创建分块适配器。

Parameters
size块大小,默认为16。
Returns
chunk_t 分块适配器。

◆ counter()

template<class T>
Counter< T > console::gen::counter ( T start = T{0},
T step = T{1},
size_t times = size_t(-1) )
inline

创建计数器生成器。

Template Parameters
T值类型。
Parameters
start起始值,默认为0。
step步长,默认为1。
times输出次数,默认为无穷。
Returns
Counter<T> 计数器。

◆ cycle() [1/3]

template<class Container>
Cycle< typename Container::value_type > console::gen::cycle ( const Container & container)

创建循环生成器。

Template Parameters
Container容器类型。
Parameters
container容器。
Returns
Cycle<typename Container::value_type> 循环生成器。

◆ cycle() [2/3]

template<class Iterator>
Cycle< typename std::decay< typename Iterator::value_type >::type > console::gen::cycle ( Iterator begin,
Iterator end )

创建循环生成器。

Template Parameters
Iterator迭代器类型。
Parameters
begin起始迭代器。
end结束迭代器。
Returns
Cycle<typename std::decay<typename Iterator::value_type>::type> 循环生成器。

◆ cycle() [3/3]

template<class T>
Cycle< T > console::gen::cycle ( std::initializer_list< T > list)

创建循环生成器。

Template Parameters
T元素类型。
Parameters
list要循环的初始化列表。
Returns
Cycle<T> 循环生成器。

◆ debug()

debug_t console::gen::debug ( std::string msg = "DEBUG: ",
std::ostream & os = std::cout )
inline

创建调试适配器。

Parameters
msg调试消息前缀,默认为"DEBUG: "。
os输出流,默认为std::cout。
Returns
debug_t 调试适配器。

◆ drop()

drop_t console::gen::drop ( size_t n)
inline

创建跳过前n个元素适配器。

Parameters
n要跳过的元素个数。
Returns
drop_t 跳过元素适配器。

◆ drop_until()

template<class Pred>
drop_until_t< Pred > console::gen::drop_until ( Pred p)

创建跳过元素直到谓词成立适配器。

Template Parameters
Pred谓词类型。
Parameters
p谓词函数。
Returns
drop_until_t<Pred> 跳过元素适配器。

◆ drop_while()

template<class Pred>
drop_while_t< Pred > console::gen::drop_while ( Pred pred)
inline

创建跳过前若干个元素适配器。

Parameters
p谓词。
Returns
drop_while_t 取元素适配器。

◆ file_chunks()

FileChunks console::gen::file_chunks ( const std::string & filename,
size_t chunk_size = 1024,
std::ios_base::openmode mode = std::ios::in )
inline

创建文件块生成器。

Parameters
filename文件名。
chunk_size每个数据块的大小,默认为1024字节。
mode文件打开模式,默认为std::ios::in。
Returns
FileChunks 文件块生成器。

◆ file_lines()

FileLines console::gen::file_lines ( const std::string & filename)
inline

创建文件行生成器。

Parameters
filename文件名。
Returns
FileLines 文件行生成器。

◆ filter()

template<class Pred>
filter_t< Pred > console::gen::filter ( Pred pred)

创建过滤适配器。

Template Parameters
Pred谓词函数类型。
Parameters
pred谓词函数。
Returns
filter_t<Pred> 过滤适配器。

◆ generate()

template<class Func>
Generate< Func > console::gen::generate ( Func func)

创建生成器适配器。

Template Parameters
Func生成函数类型。
Parameters
func生成函数。
Returns
Generate<Func> 生成器适配器。

◆ list() [1/3]

template<class Container>
List< typename Container::value_type > console::gen::list ( Container & container)

从容器引用创建列表生成器。

Template Parameters
Container容器类型(自动推导)。
Parameters
container容器引用。
Returns
List<typename Container::value_type> 列表生成器。

◆ list() [2/3]

template<class Iterator>
List< typename std::decay< typename Iterator::value_type >::type > console::gen::list ( Iterator begin,
Iterator end )

从迭代器范围创建列表生成器。

Template Parameters
Iterator迭代器类型(自动推导)。
Parameters
begin起始迭代器。
end结束迭代器。
Returns
List<typename std::decay<typename Iterator::value_type>::type> 列表生成器。

◆ list() [3/3]

template<class T>
List< T > console::gen::list ( std::initializer_list< T > list)

从初始化列表创建列表生成器。

Template Parameters
T元素类型。
Parameters
list初始化列表。
Returns
List<T> 列表生成器。

◆ map()

template<class Func>
map_t< Func > console::gen::map ( Func f)

创建映射适配器。

Template Parameters
Func映射函数类型。
Parameters
f映射函数。
Returns
map_t<Func> 映射适配器。

◆ operator%()

template<class Op1, class Op2>
pipeline_t< Op1, Op2 > console::gen::operator% ( Op1 op1,
Op2 op2 )

管道组合操作符,用于连接两个适配器。

Template Parameters
Op1第一个适配器类型。
Op2第二个适配器类型。
Parameters
op1第一个适配器。
op2第二个适配器。
Returns
pipeline_t<Op1, Op2> 组合后的管道适配器。

等价于 pipeline(op1, op2),提供更简洁的语法。

◆ operator&()

template<class Gen1, class Gen2>
auto console::gen::operator& ( Gen1 && g1,
Gen2 && g2 ) -> decltype(gen::zip( std::forward< Gen1 >(g1), std::forward< Gen2 >(g2)))

按位与操作符重载,用于压缩两个生成器。

Template Parameters
Gen1第一个生成器类型。
Gen2第二个生成器类型。
Parameters
g1第一个生成器。
g2第二个生成器。
Returns
Zip<Gen1, Gen2> 压缩生成器。

◆ operator+()

template<class Gen1, class Gen2>
Chain< Gen1, Gen2 > console::gen::operator+ ( Gen1 g1,
Gen2 g2 )

加号操作符重载,用于连接两个生成器。

Template Parameters
Gen1第一个生成器类型。
Gen2第二个生成器类型。
Parameters
g1第一个生成器。
g2第二个生成器。
Returns
Chain<Gen1, Gen2> 链式生成器。

◆ operator|()

template<class Gen, class... Ops>
auto console::gen::operator| ( Gen gen,
pipeline_t< Ops... > pl ) -> decltype(pl.pipeline(gen))

管道操作符,将管道应用到生成器。

Template Parameters
Gen源生成器类型。
Parameters
gen源生成器。
pl管道适配器。
Returns
应用管道后的生成器。

◆ pipeline()

template<class... Ops>
pipeline_t< Ops... > console::gen::pipeline ( Ops... ops)

创建管道适配器。

Template Parameters
Ops适配器类型列表。
Parameters
ops适配器对象。
Returns
pipeline_t<Ops...> 管道适配器。

用于将多个适配器组合成一个管道。

◆ random()

template<class T>
Random< T > console::gen::random ( T min,
T max,
std::mt19937::result_type seed = std::random_device{}() )

创建随机数生成器。

Template Parameters
T数值类型。
Parameters
min随机数最小值(包含)。
max随机数最大值(包含)。
seed随机数种子,默认为随机设备生成。
Returns
Random<T> 随机数生成器。

◆ range() [1/2]

template<class T>
Range< T > console::gen::range ( T begin,
T end,
T step = 1 )

创建范围生成器。

Template Parameters
T数值类型。
Parameters
begin起始值。
end结束值(不包含)。
step步长,默认为1。
Returns
Range<T> 范围生成器。

◆ range() [2/2]

template<class T>
Range< T > console::gen::range ( T end)

创建范围生成器。

Template Parameters
T数值类型。
Parameters
end结束值(不包含)。
Returns
Range<T> 范围生成器。

◆ reduce()

template<class T, class BinaryOp>
reduce_t< T, BinaryOp > console::gen::reduce ( const T & init,
BinaryOp bo )

创建归约适配器。

Template Parameters
T初始值类型。
BinaryOp二元操作符类型。

◆ repeat() [1/2]

template<class T>
Repeat< T > console::gen::repeat ( T val)

创建重复生成器。

Template Parameters
T值类型。
Parameters
val要重复的值。
Returns
Repeat<T> 重复生成器。

◆ repeat() [2/2]

template<class T>
Repeat< T > console::gen::repeat ( T val,
size_t n )

创建重复生成器。

Template Parameters
T值类型。
Parameters
val要重复的值。
n重复次数。
Returns
Repeat<T> 重复生成器。

◆ scan()

template<class T, class BinaryOp>
scan_t< T, BinaryOp > console::gen::scan ( T init,
BinaryOp op )

创建一个扫描适配器。

Template Parameters
T扫描状态类型。
BinaryOp二元操作符类型。
Parameters
init初始值。
op二元操作符。
Returns
扫描适配器。

◆ step_by()

step_by_t console::gen::step_by ( size_t size = 1)
inline

创建步进适配器。

Parameters
size步长,默认为1。
Returns
step_by_t 步进适配器。

◆ take()

take_t console::gen::take ( size_t n)
inline

创建取前n个元素适配器。

Parameters
n要取的元素个数。
Returns
take_t 取元素适配器。

◆ take_until()

template<class Pred>
take_until_t< Pred > console::gen::take_until ( Pred p)

创建取元素直到谓词成立适配器。

Template Parameters
Pred谓词类型。
Parameters
p谓词函数。
Returns
take_until_t<Pred> 取元素适配器。

◆ take_while()

template<class Pred>
take_while_t< Pred > console::gen::take_while ( Pred pred)
inline

创建取前若干个元素适配器。

Parameters
p谓词。
Returns
take_while_t 取元素适配器。

◆ to()

template<class Iterator>
to_t< Iterator > console::gen::to ( Iterator it)

创建目标迭代器适配器。

Template Parameters
Iterator目标迭代器类型。
Parameters
it目标迭代器。
Returns
to_t<Iterator> 目标迭代器适配器。

◆ views() [1/2]

template<class Container>
Views< typename Container::iterator > console::gen::views ( Container & container)

从容器引用创建视图生成器。

Template Parameters
Container容器类型(自动推导)。
Parameters
container容器引用。
Returns
Views<typename Container::iterator> 视图生成器。

◆ views() [2/2]

template<class Iter>
Views< Iter > console::gen::views ( Iter begin,
Iter end )

从迭代器范围创建视图生成器。

Template Parameters
Iter迭代器类型。
Parameters
begin起始迭代器。
end结束迭代器。
Returns
Views<Iter> 视图生成器。

◆ window()

window_t console::gen::window ( size_t size = 16)
inline

创建窗口适配器。

Parameters
size窗口大小,默认为16。
Returns
window_t 窗口适配器。

◆ zip()

template<class Gen1, class Gen2>
Zip< typename std::decay< Gen1 >::type, typename std::decay< Gen2 >::type > console::gen::zip ( Gen1 && g1,
Gen2 && g2 )

压缩两个生成器。

Template Parameters
Gen1第一个生成器类型。
Gen2第二个生成器类型。
Parameters
g1第一个生成器。
g2第二个生成器。
Returns
Zip<Gen1, Gen2> 压缩生成器。

Variable Documentation

◆ enumerate

enumerate_t console::gen::enumerate
staticconstexpr