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

Pol*_*mer 5 c++

我的问题部分是由这个问题推动的.

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

所以boost::adaptors::reversed不计算,因为反转算法处于提升状态.

Pau*_*per 7

没有.

让我们说f并且g是STL算法.

让我们说你想要的是f(g(x))(我想在这里传达这个想法......).

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

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

例如,说f是"排序"并且g是"反向".Boost的适配器可以发现反向步骤是无操作并跳过它.STL算法不能这样做,因为没有办法让这些信息通过.