【发布时间】:2020-04-20 14:02:12
【问题描述】:
有些人的自定义列表类带有car(例如head)cdr(例如tail)。我想知道std::list 是否可以用来支持这些操作。 car 是微不足道的。但是我不知道cdr是怎么模拟出来的。
【问题讨论】:
-
如果你想就地修改列表,那么
pop_front。如果你想复制尾部,那么std::list<SomeType>{std::next(mylist.begin()), mylist.end()}; -
C++ 列表不会暴露它们的结构,而这是“正确”的 Lisp 列表(Newell-Shaw-Simon 列表)所需要的。
-
@IgorTandetnik 但是
pop_front丢失了原始列表?使用 lispcdr,原始列表仍然可用。 -
你看过我评论的第二部分了吗?
-
@IgorTandetnik:复制尾部不是
cdr所做的。