Liebe Leute
habe ein Problem mit verketten Listen ich schicke einfach mal meinen Code
Hätte ich eine verkettet Liste mit <int> und diese kann diese mit dem Befehl sort(); sortiert werden. Also aus 6,4,3,3,2,1,7,1,usw. würde
. 1,1,2,3,3,4,6,6,7, usw...
Das gleich will ich auch für meine Liste nur besteht diese aus mehreren Listenelementen also in etwa so.
Nr, Zeit, Status
1, 500, GEMELDET
2, 500, GEMELDET
3, 900, GEMELDET
4, 700, GEMELDET
5, 400, AKTIV
6, 900, GEMELDET
7, 450, AKTIV
8, 700, AKTIV
jetzt soll die STL einfach mal mir die Arbeit erleichtern und ich schreibe einfach
lAuftragsliste.remove ('AKTIV') //das wäre nur Beispiel damit klappt es nicht.
und schwupps sollen alle Aktiven Elemente aus der Liste gelöscht werden und wenn ich die Liste ausgeben würde erscheinen.
1, 500, GEMELDET
2, 500, GEMELDET
3, 900, GEMELDET
4, 700, GEMELDET
6, 900, GEMELDET
Hätte vielleicht einer eine gute Idee wie man das machen könnte?
Wäre echt toll wenn mir jemand helfen könnte.
Mit bestem Dank
habe ein Problem mit verketten Listen ich schicke einfach mal meinen Code
Code:
#include <iostream>
#include <list>
using namespace std;
void Liste_ausgeben(); //Prototyp der Funktion Liste_ausgeben()
enum STATUS //Definition des Status
{
AKTIV, GEMELDET
};
class Auftragsliste //Die Klasse der Auftragsliste alles public deklariert
{
public:
Auftragsliste(int Wert, double Zeit, STATUS Status) //char status
{
m_Zeit=Zeit;
m_Wert=Wert;
m_Status=Status;
}
double m_Zeit;
int m_Wert;
STATUS m_Status; //mit enum definiert
};
//globale Variablen deklariert! Damit die Funktion Liste_ausgeben() den iterator kennt;
list<Auftragsliste*> lAuftrag;
list<Auftragsliste*>::iterator i;
int main()
{
int Anzahl =0;
Auftragsliste *Temp = NULL;
cout <<"Wie viele Aufträge erzeugen?"<<endl;
cin>> Anzahl;
for (int j=0; j<Anzahl; j++)
{ Temp = new Auftragsliste(1,1,GEMELDET);
lAuftrag.push_back (Temp);
}
Anzahl=0;
for (i=lAuftrag.begin(); i!=lAuftrag.end(); ++i)
{ cout<<"DAS ELEMENT "<<(*i)->m_Wert<<" wird bei der Zeit :" <<(*i)->m_Zeit<<" der Status : ";
if((*i)->m_Status==GEMELDET)
cout<<"GEMELDET"<<endl;
else
cout<<endl;
} cout<<endl;
for (i=lAuftrag.begin(); i!=lAuftrag.end(); ++i)
{
(*i)->m_Wert = Anzahl;
(*i)->m_Zeit = 500;
(*i)->m_Status = GEMELDET;
Anzahl ++;
}
Liste_ausgeben();//Ausgabe der Liste!
lAuftrag.insert(lAuftrag.begin(), new Auftragsliste(7,900,GEMELDET)); //Einfügen eines neuen Elementes
Liste_ausgeben();
i=lAuftrag.end(); //Iterator zeigt aufs Listenende
i--;
i--;//Zwei Schritte zurück gehen zeigt jetzt auf das vorletzte Element aus der Liste
lAuftrag.erase(i); //Hier wird das vorletzte Element aus der Liste gelöscht
cout<<endl;
Liste_ausgeben(); //Zur Überprüfung Liste anschauen
for (i=lAuftrag.begin(); i!=lAuftrag.end(); i++) //Liste aus dem Heap wieder komplett freigeben!
{
delete (*i);
(*i) = NULL;
}
lAuftrag.clear();
return 0;
}//main
void Liste_ausgeben() //Definition der Funktion Liste_ausgeben()
{
for (i=lAuftrag.begin(); i!=lAuftrag.end(); ++i)
{ cout<<"DAS ELEMENT "<<(*i)->m_Wert<<" wird bei der Zeit :" <<(*i)->m_Zeit<<" der Status : ";
if((*i)->m_Status==GEMELDET)
cout<<"GEMELDET"<<endl;
}
cout<<endl;
}
Hätte ich eine verkettet Liste mit <int> und diese kann diese mit dem Befehl sort(); sortiert werden. Also aus 6,4,3,3,2,1,7,1,usw. würde
. 1,1,2,3,3,4,6,6,7, usw...
Das gleich will ich auch für meine Liste nur besteht diese aus mehreren Listenelementen also in etwa so.
Nr, Zeit, Status
1, 500, GEMELDET
2, 500, GEMELDET
3, 900, GEMELDET
4, 700, GEMELDET
5, 400, AKTIV
6, 900, GEMELDET
7, 450, AKTIV
8, 700, AKTIV
jetzt soll die STL einfach mal mir die Arbeit erleichtern und ich schreibe einfach
lAuftragsliste.remove ('AKTIV') //das wäre nur Beispiel damit klappt es nicht.
und schwupps sollen alle Aktiven Elemente aus der Liste gelöscht werden und wenn ich die Liste ausgeben würde erscheinen.
1, 500, GEMELDET
2, 500, GEMELDET
3, 900, GEMELDET
4, 700, GEMELDET
6, 900, GEMELDET
Hätte vielleicht einer eine gute Idee wie man das machen könnte?
Wäre echt toll wenn mir jemand helfen könnte.
Mit bestem Dank