функция стирания значения для двойного связанного списка, неизвестная ошибка - PullRequest
0 голосов
/ 21 сентября 2018

Я получаю следующую ошибку:

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 *'

Вот пример, где всплывает ошибка.

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); }

Кто-нибудь знает, как подойти к этой проблеме?Полный код можно найти здесь .

1 Ответ

0 голосов
/ 21 сентября 2018

Вы не используете std :: remove правильно.Вы должны предоставить два итератора, а не один итератор для удаления элемента.

В результате компилятор считает, что вы пытаетесь вызвать std :: remove из <cstdio>, чтопринимает символьный указатель, то есть ошибку.

Чтобы исправить ошибку, вызовите std::remove с двумя аргументами итератора.Второй аргумент обозначает один элемент после того, который вы хотите удалить:

std::remove(it, std::next(it));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...