【发布时间】:2017-10-29 21:34:38
【问题描述】:
根据我对链表的了解,在我看来这应该是可能的,但我还没有找到任何有答案的地方,所以我在这里问。
给定两个迭代器到同一个列表中的项目。我想将迭代器“frm”指向的项目“插入”到迭代器“to”指向的项目之前的列表中。
似乎只需要更改列表中指向“frm”的项目的指针(以删除“frm”),然后更改指向“to”的项目的指针,以便它引用“frm”然后将“frm”节点上的指针更改为指向“to”。
我到处寻找这个问题,但找不到答案。
请注意,我不能使用 splice,因为我无法访问列表,只能访问列表中项目的迭代器。
template <typename T>
void move(typename std::list<T>::iterator frm, typename std::list<T>::iterator to) {
//remove the item from the list at frm
//insert the item at frm before the item at to
}
【问题讨论】:
-
在不知道它属于哪个容器的情况下,不能使用迭代器将自己从容器中移除。它也不能用于将新项目附加到容器中。迭代器不一定知道它们属于哪个容器。
标签: c++ list linked-list iterator std