我的问题部分是由这个问题推动的.
有没有办法在没有中间容器的情况下编写STL算法或用户编写的算法?答案可以使用boost中的工具,但假设组合算法是用户制作的,或者来自STL.
所以boost::adaptors::reversed不计算,因为反转算法处于提升状态.
没有.
让我们说f并且g是STL算法.
让我们说你想要的是f(g(x))(我想在这里传达这个想法......).
没有办法绕过中间容器,因为结果g(x)必须是容器.
如果要避免使用中间容器,则必须使用可以"检查"或与其他算法交互的算法,例如Boost.Range adaptors(例如boost::adaptors::reversed).
例如,说f是"排序"并且g是"反向".Boost的适配器可以发现反向步骤是无操作并跳过它.STL算法不能这样做,因为没有办法让这些信息通过.