【发布时间】:2018-12-10 03:29:58
【问题描述】:
我知道 std::forward_list 是一个单链表。我想知道如何将第一个元素(头)移动到 forward_list 的末尾。没有副本或创建新节点!
我尝试了以下方法:
std::forward_list<int> l2 = {10,11,12};
auto beginIt = l2.begin();
beginIt = std::next(beginIt);
l2.splice_after(l2.end(),l2,l2.begin(),beginIt);
for(int n : l2)
std::cout << n << ' ';
std::cout << '\n';
但它不起作用。有没有办法做到这一点?
【问题讨论】:
-
@KenY-N,这里没有 push_back 函数。
-
但要求相同,找到列表中的最后一个元素为
l2.end()是在末尾之后的一个。 -
@KenY-N:在这种情况下使用相同的 forward_list,没有创建节点。
-
链接的问题是这个问题的一部分答案,因为要正确执行移动,您需要一个指向最后一个元素的迭代器。但对这个问题的正确答案应该解释为什么,以及如何处理它。