C++ 用于双链接列表的擦除值函数,未知错误

C++ 用于双链接列表的擦除值函数,未知错误,c++,visual-c++,linked-list,C++,Visual C++,Linked List,我得到以下错误: 1>c:\dev\linkedlist\linkedlist\doublelinkedlist.h(390): error C2664: 'int remove(const char *)': cannot convert argument 1 from 'DoubleLinkedList<int>::iterator' to 'const char *' 有人知道如何解决这个问题吗?可以找到完整的代码。您没有正确使用。您应该提供两个迭代器,而不是一个迭代器

我得到以下错误:

1>c:\dev\linkedlist\linkedlist\doublelinkedlist.h(390): error C2664: 'int remove(const char *)': cannot convert argument 1 from 'DoubleLinkedList<int>::iterator' to 'const char *'
有人知道如何解决这个问题吗?可以找到完整的代码。

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

发生的情况是,编译器认为您正试图从
调用一个字符指针,从而导致错误

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

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

看起来你正在从C中提取运行时函数。C++中有一个包含STIDO.H/CSTDIO的代码吗?您应该删除它并改用iostream(并非有意使用双关语)@Anders我使用了iostream、算法、内存、实用程序、stdexcept、iosfwd、type_traits和ostream在头文件中?如果你这样做了,就把它扔掉。你是不是在使用奇怪的宏,除了少输入几个字母之外什么都不添加?摆脱这些。请提取一个,人们不应该为了找到相关的代码而询问或跟踪链接。哦,如果是这样的话,拿着这个并检查一下。对于这种特殊情况,也请阅读。您知道如何修复它吗?'remove':函数不接受2个参数。我不知道为什么我没有一个#include anywhere链接上的文档解释了如何解决这个问题,却收到了这个消息。元素的范围从
[第一个,最后一个)
。注意右边的括号——它有特殊的含义。@snorlaxxx——我们不知道您的代码由什么组成。很明显,函数声明包含在某个地方,否则编译器不会给出错误。是的,我没有看到它,我包含的库是否可能包含stdio?
while ((it = std::find(it, end(), value)) != end()) { it = std::remove(it); }
std::remove(it, std::next(it));