双链表的擦除值函数,未知错误

erase value function for a double linked list, unknown error

本文关键字:未知 错误 函数 链表 擦除      更新时间:2023-10-16

我收到以下错误:

1>c:devlinkedlistlinkedlistdoublelinkedlist.h(390): error C2664: 'int remove(const char *)': cannot convert argument 1 from 'DoubleLinkedList<int>::iterator' to 'const char *'

这是弹出错误的实例。

template <class T>
void DoubleLinkedList<T>::eraseVal(const T& value) {
iterator it = begin();
while ((it = std::find(it, end(), value)) != end()) { it = std::remove(it); }
}

更具体地说,错误来自以下行:

while ((it = std::find(it, end(), value)) != end()) { it = std::remove(it); }

有谁知道如何解决这个问题?完整的代码可以在这里找到。

您没有正确使用 std::delete。 您应该提供两个迭代器,而不是一个迭代器来删除元素。

正在发生的事情是编译器认为您正在尝试从接受字符指针的<cstdio>中调用 std::remove 因此会出现错误。

若要修复此错误,请使用两个迭代器参数调用std::remove。 第二个参数表示要删除的元素之后的一个元素:

std::remove(it, std::next(it));