是否可以在没有中间容器的情况下编写STL算法
Is it possible to compose STL algorithms without an intermediate container
我的问题部分是由这个问题引起的。
有没有一种方法可以在没有中间容器的情况下编写STL算法或用户制作的算法?答案可以使用boost的工具,但假设组成的算法是用户制作的,或者来自STL。
因此boost::adaptors::reversed
不起作用,因为反向算法处于增强状态。
否。
假设f
和g
是STL算法。
假设你想要的是f(g(x))
(我试图在这里传达这个想法…)
没有办法绕过中间容器,因为g(x)
的结果必须是一个容器。
如果要避免使用中间容器,则必须使用可以"检查"或与其他算法交互的算法,如Boost.Range adaptors
(例如boost::adaptors::reversed
)。
例如,假设f
是"排序",g
是"反向"。Boost的适配器可以发现反向步骤是不操作的,并跳过它。STL算法无法做到这一点,因为这些信息无法通过。
对于与输入和输出迭代器兼容的算法是。
它需要线程来存储执行状态,或者类似于协程的东西。
每个步骤都写入一个输出迭代器,该迭代器停止执行并运行下一个算法。类似地,从下一个输入值中读取会停止该执行线程,并等待其准备就绪。
许多<algorithms>
不符合上述限制。但那些这样做的人应该记录他们的需求。transform
合格,我想不起其他人。
相关文章:
- 在没有太多条件句的情况下,我如何避免被零除
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 在未初始化映射的情况下,将值插入到映射的映射中
- 是默认情况下分配给char数组常量的值
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在已经使用Git的情况下减少编译时间
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 如何在没有信号的情况下从C++执行QML插槽
- 如何在不知道向量大小的情况下输入向量内部的向量?
- 为什么在某些情况下不写入此文件?
- 如何在不导致堆栈溢出的情况下计算非常大的数字和很小的 HCF.我正在使用欧几里得算法
- 如何在不使用标准算法的情况下在排序向量中添加 c 元素?
- 如何在没有 c++ 中的数组/算法的情况下对两个条件的字符串进行排序
- 我如何在C 中制作算法,以在不重复的情况下查找集合的变化(即n元素,选择k)
- 在不使用默认算法的情况下对字符串的 std 向量进行排序
- 是否可以在没有中间容器的情况下编写STL算法
- 看似有效的算法,用于在不浪费空间的情况下将二叉搜索树存储在数组中
- Random_shuffle算法-在没有随机生成器函数的情况下产生相同的结果
- 为什么count_if()可以在没有算法头的情况下工作