Я пишу функцию "insertBefore". Я проверяю, является ли это началом функции (это работает). Затем я пытаюсь, чтобы мой предыдущий итератор указывал на желаемое местоположение, просматривая весь список, пока его следующий не будет равен итератору, переданному в функцию (то есть место, которое я хочу вставить перед). Теперь предыдущий - то, где я хочу это, я пытаюсь сделать его следующую точку на новый узел (тот, который я передал в функцию), и новый узел указывает на старый итератор после него.
Я пытался поменять местамиитераторы вместо.
template <typename T, typename InputIterator>
void SLinkedList<T, InputIterator>::insertBefore(InputIterator & t_position, T t_element)
{
//Q1
SListNode<T>* temp = t_position.get();
SListNode<T>* previous = m_head.get();
std::unique_ptr<SListNode<T>> newNode = std::make_unique<SListNode<T>>(t_element, this);
//If position is the head node
if (t_position.get() == m_head.get())
{
insertFirst(t_element);
}
else
{
while (previous != temp)
{
previous = previous->next().get();
}
if (previous == temp)
{
previous->setNext(newNode);
newNode->setNext(temp->next());
}
}
Это должно вставить новый номер, который я передал, чтобы вставить себя в список перед повторяющейся позицией.