c++ - std::forward_list 是否支持手动重新指向?

标签 c++ linked-list std forward-list

以下是一个很琐碎的问题,以前可能有人问过,但是,我无法通过搜索找到答案。

我想做的是使用 std::forward_list 在 C++ 中实现“Cracking the Coding Interview”中的一些练习。在我的理解中,链表元素包含 a) 数据和 b) 指向下一个元素的指针。一些解决方案需要将“下一个”指针重新指向另一个元素,就像这样(伪代码)

node1.next = node1.next.next.next; // Effectively deletes 2 elements

但是,我在 forward_list documentation 中找不到任何方法来执行此操作?我错过了什么,还是根本不可能?

如果有人能指出我正确的问题,我将非常高兴,谢谢!

最佳答案

您不能在 std::forward_list 中进行手动重新指向,因为它对您隐藏了所有机制。这就是创建它的原因!

相反,您需要对其执行业务操作。例如,要从列表中删除元素,您需要调用 erase_after() - 它甚至具有一次性删除两个连续节点的重载。

关于c++ - std::forward_list 是否支持手动重新指向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36343817/

相关文章:

java - 双向链表删除第一次出现的方法

c++ - 无法将 insert() 结构插入 unordered_set

c++ - 为什么STL集合大小的复杂度是O(1),它是如何计算的?

c++ - 下标赋值重载

c# - COleDispatchDriver 错误 : automation return value coercion failed, DISP_E_TYPEMISMATCH ($80020005)

c++ - 给定二叉树,设计一种算法,该算法创建每个深度的所有节点的链表

c - 使用链表将数据插入堆栈

C++ - 将 istream_iterator 与 wstringstream 一起使用

c++ - 转换内存位置以获取字符串

c++ - 从文本文件加载时出现错误