usuwanie elementu listy

0

witam, mam liste, po ktorej poruszam się za pomocą iteratora

list<int>::iterator p = sciezka.begin();
    while(p != sciezka.end()) { cout << *p << " "; p++; }

w jaki sposób mogę usunąć element ze środka tej listy? powiedzmy, że znam jego wartość, myślałem, żeby napisać funkcję która przechodzi po całości, i jak natrafi na odpowiedni element, to go usuwa. Tylko że nie wiem jak ją napisać. Proszę o pomoc

0

Tu przykład jak usunąć środkowy element:

#include <iostream>
#include <cstdlib>
#include <list>
using namespace std;

int main()
{
    list<int> L;
    L.push_back(5);
    L.push_back(6);
    L.push_back(7);
    L.push_back(8);
    L.push_back(9);
    list<int>::iterator it=L.begin();
    int srodek=(L.size()/2);
    if(L.size()%2==0)
        srodek--;
    //jezeli rozmiar listy jest liczba parzysta to usuwam element rozmiar/2
    while(srodek)
    {
        ++it;
        srodek--;
    }
    //it wskazuje na srodkowy element
    L.erase(it);
    for(it=L.begin();it!=L.end();++it)
    {
        cout << *it << endl;
    }
        return 0;
}
0

genialnie, dzięki, już się bałem, że na liście można usuwać tylko ostatni element, a to by mnie zmuszało do napisania od nowa programu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1