是否可以在没有中间容器的情况下编写STL算法

Is it possible to compose STL algorithms without an intermediate container

本文关键字:情况下 算法 STL 中间 是否      更新时间:2023-10-16

我的问题部分是由这个问题引起的。

有没有一种方法可以在没有中间容器的情况下编写STL算法或用户制作的算法?答案可以使用boost的工具,但假设组成的算法是用户制作的,或者来自STL。

因此boost::adaptors::reversed不起作用,因为反向算法处于增强状态。

否。

假设fg是STL算法。

假设你想要的是f(g(x))(我试图在这里传达这个想法…)

没有办法绕过中间容器,因为g(x)的结果必须是一个容器。

如果要避免使用中间容器,则必须使用可以"检查"或与其他算法交互的算法,如Boost.Range adaptors(例如boost::adaptors::reversed)。

例如,假设f是"排序",g是"反向"。Boost的适配器可以发现反向步骤是不操作的,并跳过它。STL算法无法做到这一点,因为这些信息无法通过。

对于与输入和输出迭代器兼容的算法是。

它需要线程来存储执行状态,或者类似于协程的东西。

每个步骤都写入一个输出迭代器,该迭代器停止执行并运行下一个算法。类似地,从下一个输入值中读取会停止该执行线程,并等待其准备就绪。

许多<algorithms>不符合上述限制。但那些这样做的人应该记录他们的需求。transform合格,我想不起其他人。

相关文章: