两个打字员是否可以在固定时间内拼接
Are two typelists spliceable in a constant time?
我正在使用Alexandrescu的Modern c++ Design中定义的类型器。在他的书中,他谈到将一个类型附加到一个打字员,但他没有谈到拼接两个打字员…
我猜可以使用Append功能拼接两个类型列表,但它不会导致线性时间拼接(而std::list::splice是O(1))。
?嗯,我知道这个计算时间可以被认为是"自由的",因为它是编译时的,但我很好奇:)
谢谢!
类型列表的概念通常*更接近于计算机科学中列表的概念,而不是std::list
所代表的(双重)链表。这两种思想名称相同,但有重要区别。
由于元程序是纯函数式的,所以您不能像std::list::splice
那样就地修改输入类型列表:您必须"生成"输出类型列表,这将是线性的。(然而,懒惰可以用来推迟和减少成本;那么,支付的确切成本将取决于最终的算法。)
*:我说通常是因为Boost。MPL支持像迭代器和视图这样模糊界限的东西,至少从用户的角度来看是这样。
(为了便于讨论,假设这里的"CS"列表是指cons单元格+空列表)
相关文章:
- boost::进程间消息队列引发错误
- Ardunio UNO解决了多个重叠的定时器循环
- Windows 进程间同步类似事件?
- 如何在提升间进程中构建具有给定计数的向量并向其添加元素
- 在通知提升间处理条件变量时未按住锁会导致问题
- 查询 NFS 上的提升进程间::file_lock
- 进程间通信堆内存
- 避免使用 boost::进程间::消息队列创建文件
- 提升 c++ 间进程
- 处理影响跨不同线程共享对象的定时回调的最佳方法是什么?
- 我们能否在stm32f中使用硬件定时器控制两个独立的进程
- Arduino Nano:A4988 使用串行输入时通过定时器进行步进控制不稳定
- 在递归期间将值存储在字符串中
- C++ 中递归期间的堆栈溢出
- 在 Windows/C++ 上使用多进程应用程序的高精度定时操作
- 提升进程间named_condition_any不通知
- 没有信号处理程序的POSIX定时器的目的是什么?
- 提升进程间message_queue和分叉
- Win32 进程间通信分配
- 是否可以在C++中拼接缓冲区,零拷贝?