gpt4 book ai didi

c++ - std::forward_list 中可以存在循环吗?

转载 作者:行者123 更新时间:2023-11-30 02:27:17 26 4
gpt4 key购买 nike

我正在研究弗洛伊德的 Tortoise and Hare algorithm ,并尝试使用 std::forward_list 对问题建模。具体来说,我想使用 std::forward_list 有意创建一个循环,并使用所述算法检测它。

(根据下面的评论,没有破解接口(interface);也就是说,使用 std::forward_list 接口(interface)来创建循环。)

“问题”在于这似乎是不可能的。我查看了构造函数和修改器方法。据我所知,std::forward_list 的接口(interface)阻止了此类循环的发生。这通常是一件好事,除非您正在为面试做准备,并且想有目的地实现一个带有循环的 forward_list :^)

是否可以在 std::forward_list 中创建循环?

引用资料:

How to detect a loop in a linked list?
http://en.cppreference.com/w/cpp/container/forward_list
http://codingfreak.blogspot.com/2012/09/detecting-loop-in-singly-linked-list_22.html

最佳答案

forward_list(和list,就此而言)的界面专门设计用于向用户隐藏节点和节点指针的详细信息。它们在设计和抽象上没有循环。

所以不,他们不会给你创建格式错误列表的自由。即使使用 splice 也不会让您这样做,因为它会先从旧列表中删除项目,然后再将它们放入新列表中。

如果您想测试循环检测算法,则必须编写您自己的链表类型,允许人们在其中创建循环。

关于c++ - std::forward_list 中可以存在循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41878818/

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