在使用 Haskell 和函数式语言进行了大量工作之后,我正在学习 C++,我发现我一直在尝试解决同样的问题:
- 从输入流中读取一些数据
- 根据特定算法对它们进行标记
- 处理令牌
如果这是 Haskell,我可以简单地利用一切都是惰性的这一事实,并根据我的想法编写我的转换,然后在下游被消耗时应用它。甚至有一些库可以执行这种精确的模式(管道和管道)。
假设我想获取序列1 2 3 4 5 6 ...
和输出12 34 56 ...
。我可以看到如何编写对流进行操作并就地处理数据的临时代码。但我想知道是否有一种抽象机制允许我通过转换来自另一个流的数据(以任何可能的方式)来构建一个新流。这种抽象应该允许我在处理数据时缓冲数据,而不仅仅是将单个元素简单映射到新值。
以下是限制:
- 除了stdlib之外,我不能使用任何其他库。
- 它必须在 C++03 上工作(意味着没有 C++11 功能。)
如果你在想,这是作业吗?好吧,我得到了很多课堂作业,这些作业需要我处理数据流(这是没有库和 C++03 限制的原因)。并不是我不知道如何使用while
循环来做到这一点,而是我想知道stl中是否存在现有的流抽象,只是等待被发现和使用。
但如果这样做的唯一方法是使用 C++11,那么我想知道。