gpt4 book ai didi

c++ - 将第一个元素移动到 forward_list 的末尾

转载 作者:太空狗 更新时间:2023-10-29 20:50:37 26 4
gpt4 key购买 nike

我知道 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';

但它不起作用。有办法吗?

最佳答案

为了您的目的,splice_after 需要一个指向最后一个元素的迭代器。即,end() 之前的元素。没有便宜的方法可以得到这个:

auto pos = l2.begin();
while(std::next(pos) != l2.end()) ++pos;

然后,单个元素的splice_after 请求一个指向该元素之前 的迭代器。对于第一个元素,即 before_begin():

l2.splice_after(pos, l2, l2.before_begin()); 

关于c++ - 将第一个元素移动到 forward_list 的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53699122/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com