std::stack langsam?
-
Wie benutzt du den Stack? Legst du jedesmal einen neuen Stack an, wenn du einen brauchst, oder hast du nur einen einzigen Stack?
-
Ich habe 2 Stacks ganz normale stacks die das ganze programm über in 2 singletons sind.
das 1. ist nur um strings abzuspeichern, das andere für klassen.
Und nein ich speichere keine kopien und lege auch nicht immer einen neuen stack an. ich benutze nur push, pop und top.
-
std::stack ist ein container adapter. du kannst auch einen vector, list, deque, etc. als implementierung verwenden. standardmäßig ist stack per deque implementiert.
falls wirklich jedesmal neu allokiert werden sollte, würde ich mir ernsthaft sorgen um die STL implementierung machen (uU ein Bug)
ich nehme aber einfach an, dass du stack falsch verwendest
-
Was kann man denn am Stack falsch machen? für wie blöde hälste mich eigentlich? glaubste net das bei einem push neuer speicher angelegt wird? hä?
Gucks dir doch gefälligst selber an.
-
Shade Of Mine schrieb:
std::stack ist ein container adapter. du kannst auch einen vector, list, deque, etc. als implementierung verwenden. standardmäßig ist stack per deque implementiert.
falls wirklich jedesmal neu allokiert werden sollte, würde ich mir ernsthaft sorgen um die STL implementierung machen (uU ein Bug)
Nimmt man die Beschreibung von sgi.com als Grundlage, so ist das in der Tat der
Fall, wobei ich mir bis jetzt noch nicht die muehe gemacht habe, das selbst
zu testen.[edit]
ist ja lediglich size, welches +1 hoch geht (logischer weise). Das hat natuerlich
nicht zwangsmaessig was mit dem reservierten Speicher zu tun.
[/edit]mfg
v R
-
***************+ schrieb:
Was kann man denn am Stack falsch machen? für wie blöde hälste mich eigentlich? glaubste net das bei einem push neuer speicher angelegt wird? hä?
Eigentlich wollte ich hier aufhören zu lesen, aber...
***************+ schrieb:
Gucks dir doch gefälligst selber an.
...das hier ist ja wohl der Gipfel. Wer hat denn hier ein Problem? Ich denke Shade ist es ziemlich egal ob dein Programm funktioniert oder nicht. Hilfreich wäre auch zu wissen woran du festmachst, dass tatsächlich neuer Speicher angefordert und umkopiert wird. Hast du die Implementierung angeschaut?
-
***************+ schrieb:
Was kann man denn am Stack falsch machen? für wie blöde hälste mich eigentlich? glaubste net das bei einem push neuer speicher angelegt wird? hä?
Gucks dir doch gefälligst selber an.
Darf alle Forumsteilnehmer bitte, nicht weiter versuchen hier zu helfen. Danke.
-
Inkompetenter Mod, erst einen auf Dicke Eier machen und dann zu stolz sein zu sehen das er falsch liegt. Typisch.
-
du kannst bei std::stack bestimmmen was für eine Art Container darunter liegen soll. Nimm einfach std::list. Damit hast du eine doppelt verkettete Liste, bei der Speicher + 1 beim pushen nicht für alle bestehenden Elemente neu alloziert wird.
Zum Beispiel:
std::stack<int, std::list<int> >
-
Shade Of Mine du bist bestimmt ein ****** Hip Hopper.
-
mit std::stack hatte ich noch nie Probleme.
Bei mir lauft es super/perfekt/geil/atemberaubend/...Mmmm, std::stack ist doch keine std::map!
std::stack<int, std::list<int> > bla;
Geht das???
MFG Ghost