#cplusplus #dev #oi #algorithm
摘要:支持 iostream(cin/cout) 的语法糖
支持
题外话 C++ 什么时候支持
此外有 random 生成 int/longlong(
(当然,基于 escape code 可以与 std::cout 配套
[fg/bg]_color(red) 定义前背景色
(no_) underline/blink 选择风格
reset/error_color 便利 span
用
还有
最后是一个数据生成及校验的(这个目标比较有趣,但只做了类似离线OJ的使用目标)
感觉不错, Mivik 大佬的接口复用设计能力比以前强了好多啊(一个月前上传的,大概是现在才想起来发) 🤔
这用途都不止 OI 了,而且命名都很优雅
原来现在 OI 才是 C++ cutting edge 语言特性的最大利用方啊
摘要:支持 iostream(cin/cout) 的语法糖
cout<1<endl;
取余操作(当然是OI应该叫模数了 但我不OI) 隐式 int mod 上下文的宏,以及 (57 / 233) % 10007 == (mint(57) / 233).v
的快速模意义(mint)运算支持
mic::graph::directed_weighted_graph<type>
这样命名的图对象,有 resize(n); link(a,b); edges(i)
甚至 is_tree() 等操作题外话 C++ 什么时候支持
for (auto [a,b] : iter)
这种语法了…… std::pair
可能有用吧此外有 random 生成 int/longlong(
rng.rand<t>()
)/tree 数据(无重生成)的e(1,2 +1) == 2
brackets(10) // [] seq还有 ANSI terminal (term.h) 的
binary_tree(10) // size 10, depth (log2 10-1)+1
e.shuffle(a.begin(), a.end());
(当然,基于 escape code 可以与 std::cout 配套
[fg/bg]_color(red) 定义前背景色
(no_) underline/blink 选择风格
reset/error_color 便利 span
用
reset_line()
删除上一行制作单行动画(如进度条)还有
cursor::right
及 hide/show 这样的光标API;整体可配合 std::cout.flush();
使用最后是一个数据生成及校验的(这个目标比较有趣,但只做了类似离线OJ的使用目标)
mic::random_engine rng;检验:
ZEN_GEN/*to data/ folder*/("[name]", 20) {/*(id, out) ->*/
int limit; switch (id){
case 1 ... 5: limit = zen::map/*_range*/(1,5, 20,100);/*with step change*/; break;
default: limit = 5000000; break;
}
out << rng(0, limit) << ' ' << rng(0, limit) << std::endl;
}
ZEN_CHECK("a.cpp", "b.cpp") {对比逻辑是写死的,命令行 编译 clang 差异 diff
out << e(0, 20000) << ' ' << e(0, 20000) << std::endl;
}
感觉不错, Mivik 大佬的接口复用设计能力比以前强了好多啊(一个月前上传的,大概是现在才想起来发) 🤔
这用途都不止 OI 了,而且命名都很优雅
原来现在 OI 才是 C++ cutting edge 语言特性的最大利用方啊
GitHub
Mivik/mic
A set of helpful cpp headers, especially for competitive programmers. - Mivik/mic