Gast
#1307747
gibt es ne auflistung welche metdoten die einzelnen container können
|
Anzeige
|
Vector list usw
Gast
#1307747
gibt es ne auflistung welche metdoten die einzelnen container können
Gast
#1307760
Guckst Du da: http://www.cplusplus.com/reference/stl/
Gast
#1307768
wollte gerade für vector push_front nehmen geht aber net laut liste und programm wieso knaln die des net rein
Gast
#1307773
wollte gerade für vector push_front nehmen Weil ein Vector dafür ungünstig ist, er muss beim löschen eines elementes komplett neu augebaut werden (ausser beim letzen). Warum willst du denn ein Vector verwenden? Laka schrieb: > wollte gerade für vector push_front > nehmen geht aber net laut liste und programm > > wieso knaln die des net rein Weil die geforderte Komplexität von O(1) damit nicht erreichbar ist. Aber es hindert dich keiner, das Ganze mit insert abzuhandeln. Wenn du das brauchst kannst du auch ein std::list nehmen. Das ist oft sowieso die bessere Wahl.
Gast
#1307839
lerne gerade für die Prüfung ziehl war es gerade doppelte einträge in
list
zu vermeiden hab das ganze mit dem bool hans gelöst gibts da was
besseres
außer bool oder Flags
#include <iostream>
#include <list>
#include <string>
using namespace std;
class Verwaltung
{
public:
void bekommedaten ()
{
for( it = verw.begin() ; it != verw.end() ; it++)
{
cout << **it;
}
}
bool empty()
{
return( this->verw.empty() );
}
string* setfront_undget(string* &a)
{bool hans = false;
for( it = verw.begin() ; it != verw.end() ; it++)
{
if ((**it) == *a) hans = true;
}
if (hans == false)
{
verw.push_front(a);
}
return (*( this->verw.begin()));
}
void setback(string* &a){verw.push_back(a);}
/*string* front() //bekomme front Daten
{
return( *( this->verw.begin() ) );
}*/
private:
list<string*> verw;
list<string*>::iterator it;
};
int main()
{
string* choice1 = new string ("Hans1");
string* choice2 = new string ("Hans2");
string* choice3 = new string ("Hans4");
string* choice4 = new string ("Hans4"); //soll nicht meht eigetragen
werden
string* choice5 = new string ("Hans5");
Verwaltung ver;
(ver.setfront_undget(choice1));
(ver.setfront_undget(choice2));
(ver.setfront_undget(choice3));
(ver.setfront_undget(choice4));
(ver.setfront_undget(choice5));
ver.bekommedaten();
// cout << *(ver.front());
;}
Gast
#1307843
1. Satzzeichen 2. Syntaxhervorhebung oder Anhang 3. Copy & Paste Was soll eigentlich das werden:
?
Gast
#1307851
lerne gerade für die Prüfung ziehl war es gerade doppelte einträge in list zu vermeiden Dann nimm eine map bzw. eine std::set
Gast
#1308332
if ((**it) == *a) hans = true; hier werden einfach die Adressen verglichen wir haben zb übungen gemacht wo wir die Funktionen abwechselnd mit zeigern oder referenzen gefüllt haben das ist in der realität misst aber zum üben ok
Gast
#1308334
Laka schrieb: > if ((**it) == *a) hans = true; > > hier werden einfach die Adressen verglichen Das glaub ich eben kaum...
Gast
#1308341
äh inhalt meinte ich
Gast
#1308343
bin schon verwirrt sorry
Gast
#1308393
Wie schon jemand erwähnt hat, wäre, sofern die Reihenfolge der Einträge nicht wichtig ist, std::set die einfachste Alternative. Das kümmert sich automatisch darum, daß keine Duplikate enthalten sind. Übrigens: Warum legst du die Strings alle dynamisch mit new an und wo gibst du sie wieder frei? Daß du Pointer im Container speicherst, sorgt auch dafür, daß du nach dem Eintrag mit deiner for-Schleife suchen mußt, statt std::find nehmen zu können. So wird dann auch std::set nicht funktionieren. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|