C++ Переделать функцию для STL list контейнера

Написала функцию, которая ищет определенный элемент в одностороннем связанном списке и если его нет - добавляет его в начало списка. Было бы интересно узнать, как переделать данную функцию для STL list контейнера.

bool push_front(elem* &p, elem* &first) {
   elem *pointer = first;

   while (pointer) {
       if (pointer->val == p->val) {
           return false;
       } 
       pointer = pointer->next;
   }

   p->next = first;
   first = p;
   return true;
}

Ответы (1 шт):

Автор решения: Harry

Что-то вроде

int value;
list<int> L;

if (find(L.begin(),L.end(),value) == L.end())
    L.push_front(value);

Но list - он двусвязный; если хотите односвязный - замените list на forward_list.

→ Ссылка