我在LinkedList类中嵌套了一个迭代器类。我的问题是如何使用迭代器制作insert_after函数。其余的代码仅供参考,但我试图使用的功能在最后。
Insert_After占据位置并在其后插入一个值。
template <typename T>
class LinkedList : public LinkedListInterface<T> {
private:
struct Node {
T data; // data can be any type
Node* next; // points to the next Node in the list
Node(const T& d,Node* n) : data(d),next(n) {}
};
Node* head; // Is a pointer
class Iterator
{
private:
Node* iNode;
public:
Iterator(Node* head) : iNode(head){ }
~Iterator() {}
bool operator!=(const Iterator& rhs) const { return iNode != rhs.iNode; }
Iterator& operator++() { iNode = iNode->next; return *this; }
T& operator*() const { return iNode->data; }
};
/** Return iterator pointing to the first value in linked list */
Iterator begin(void) {
return LinkedList<T>::Iterator(head);
}
/** Return iterator pointing to something not in linked list */
Iterator end(void) {
return LinkedList<T>::Iterator(NULL);
}
/** Return iterator pointing found value in linked list */
Iterator find(Iterator first,Iterator last,const T& value) {
Iterator current = first;
bool found = false;
while (current != last) {
if (*current == value) {
return current;
}
++current;
}
return last;
}
Iterator insert_after(Iterator position,const T& value)
{
// Need help here
}
到目前为止我尝试过的结果导致了一些错误。
Iterator insert_after(Iterator position,const T& value)
{
// Need to insert after position
Iterator previous = position;
++position;
Node* newNode = new Node(value,position);
previous->next = newNode;
}
我得到的错误是错误C2664'函数':无法将行的参数n从'type1'转换为'type2'
Node* newNode = new Node(value,position);
编译器错误C2819类型'type'没有用于行的重载成员'operator->'
previous->next = newNode;
我了解这些错误,但不确定如何解决。