仓库地址: https://github.com/Toukaya/TABIYA
一个非常简单的玩具库。 我是一位现代 C++的伪爱好者(雾,某天在写 python 作业的时候,突发奇想,想用 concept 写一个鸭子类型的迭代器,即,满足迭代器的抽象概念,那么就可以是迭代器。那么一个迭代器需要满足些什么,个人认为一个单向迭代器( forward_iterator )会满足三个要求:
在这些概念下,可以得到,一个标准库迭代器,肯定是一个迭代器;一个指向数组开头的指针,也可以是一个“迭代器”;然后就写出来了一个简单的 IterWrapper 类。
使用 IterWrapper ,又写了一个简单的 Range 类,其来自于 python 的语法糖(可能不是,记忆不清了),这样使用:
tabiya::Range<int> range;
range.from(1).to(5);
std::vector<int> values;
for (auto value : range.from(1).to(5)) {
values.push_back(val); // => {1, 2, 3, 4}
}
很简单的功能,满足迭代器 concepts 的类型应该都能使用。
然后写了一个 Times 类,也是来自 python 的语法糖:
std::vector<int> values;
for (auto value : tabiya::Times(5)) {
values.push_back(val); // => {0, 1, 2, 3, 4}
}
就是一个这样功能很简单的库。 但是实际上由于我只是一个伪爱好者,能力有限也做不到写出一个很完善的库,去年 7 月份创建的仓库,断断续续直到今天才勉强实现完基本的功能,本身写 C++的抽象库就够难,抽象的抽象(指迭代器的抽象)更是( C++太难力)。 这个库肯定有许多不完善的地方(测试来自 AI ,只能说大体的功能实现了并测试了)。 发帖虽说是想与各位 v 友探讨进步,但是代码很抽象还是不指望能阅读源码了,各位佬纯当看个乐罢,如果能有指点,我会很高兴。
![]() |
1
buf1024 74 天前 via Android
估计绝大部分连看一眼的兴趣都没有,更不用说乐子了。
|
2
toukayasan OP @buf1024 哎,合理。本身也是一个无聊功能的玩具库
|