Stack dynamisch
-
Hacker schrieb:
wobei bemerkt sei das std::deque auch eine verkette Liste ist
Eieieieiei! Was ist dein Background und wie lernst du die STL?
-
Edit: gelöscht.
-
deque hat so ziemlich nichts mit verketteten Listen zu tun...
-
Edit: Ah, stop. Da hab ich wohl den namen falsch verstanden...
Deque wird ja intern durch ein Array dargestellt und ist wie einstd::vectoraufgebaut.
-
Nö.
-
Kellerautomat schrieb:
Nö.
Doch, laut Jürgen Wolf.
-
...
-
Hacker schrieb:
Doch, laut Jürgen Wolf.

Quelle: C++ Reference - dequeu
[...] unlike vectors, deques are not guaranteed to have all its elements in contiguous storage locations, eliminating thus the possibility of safe access through pointer arithmetics.
Both vectors and deques provide thus a very similar interface and can be used for similar purposes, but internally both work in quite different ways: While vectors are very similar to a plain array that grows by reallocating all of its elements in a unique block when its capacity is exhausted, the elements of a deques can be divided in several chunks of storage, with the class keeping all this information and providing a uniform access to the elements.
[...]
-
Gut, gut. Jetzt liegt das Buch im Müll. Mein C++-Wissen ist mir locker nochmal 40€ wert...
-
Laut Jürgen Wolf erbt eine Wurst auch virtuell vom Supermarkt.

gruß
syntax
-
Syntax_error schrieb:
Laut Jürgen Wolf erbt eine Wurst auch virtuell vom Supermarkt.

gruß
syntaxSupermarkt ist eine Wurst und ein Brot.
Der Typ hat sie doch nicht mehr alle, bald kommt
struct Kind : public F***e, protected Penis
-
Und Erwachsene haben keine Geschlechtsorgane?
-
Kellerautomat schrieb:
Und Erwachsene haben keine Geschlechtsorgane?
template<typename genetalien> class Erwachsen : public Burnout, public Finanzkrise, private Beziehungsprobleme, private genetalienÜbrigens ein interessantes Paradigma, ableiten von template-parametern.
-
Hacker schrieb:
Ethon schrieb:
Wieso sollte irgendjemand eine deque für einen Stack nehmen? Die höchstens bei einer FIFO-Queue, ein Stack ist aber LIFO.
Deswegen ja nur als Hinweis, dass auch eine
dequeihren Zweck erfüllen würde. Da eignet sich aber (wie bereits durch mich angedeutet - oder auch nicht) einestd::listbesser.Nö, ein std::vector natürlich.
Der ist ein vollwertiger Stack, er stellt push_back, pop_back und empty bereit.
-
Ethon_ schrieb:
Nö, ein std::vector natürlich.
Der ist ein vollwertiger Stack, er stellt push_back, pop_back und empty bereit.Warum? Da werden die Elemente umkopiert, nur damit du einen zusammenhängenden Speicherbereich hast. Das braucht ein Stack nicht.
Die
std::dequeist da schon richtig.
-
Hacker schrieb:
struct Kind : public F****, protected Peniswenn es hier irgendwo einen "Melden"-Button gäbe, hätte ich ihn jetzt gedrückt. Oder bin ich nur zu blind, diesen zu finden?
-
daddy_felix schrieb:
Hacker schrieb:
struct Kind : public F****, protected Peniswenn es hier irgendwo einen "Melden"-Button gäbe, hätte ich ihn jetzt gedrückt. Oder bin ich nur zu blind, diesen zu finden?
Der Melde-Button ist die Klingel von Jürgen Wolf.
Editiert.
-
Eine std::deque ist für die Implementation eines Stacks hervorragend geeignet. Deswegen ist sie auch das Default-Backend für std::stack.
Des weiteren geschieht die Adressierung in einer std::deque in der Regel durchaus über Zeigerarithmetik (halt in zwei Stufen), und im Gegensatz zu std::vector muss eine std::deque ihren Inhalt nie verlegen, wenn an einem der Enden neue Elemente angefügt bzw. entfernt werden.
-
seldon schrieb:
Eine std::deque ist für die Implementation eines Stacks hervorragend geeignet. Deswegen ist sie auch das Default-Backend für std::stack.
Ein std::vector ist auch hervorragend geeignet, aber nicht die Defaultwahl. stack selbst ist allerdings die wahrscheinlich überflüssigste Komponente der Standardbibliothek.
Der wesentlich Unterschied bei der Wahl zwischen vector einerseits und deque bzw. list andererseits besteht weniger darin, dass ggf. Objekte kopiert oder verschoben werden müssen, sondern darin, dass vector einmal reservierten Speicher beim Entfernen von Elementen nicht wieder freigibt (und stack hat keinen Zugriff auf shrink_to_fit). So dass dann ggf. wieder copy&swap verwendet werden muss.
-
Ethon_ schrieb:
Hacker schrieb:
Ethon schrieb:
Wieso sollte irgendjemand eine deque für einen Stack nehmen? Die höchstens bei einer FIFO-Queue, ein Stack ist aber LIFO.
Deswegen ja nur als Hinweis, dass auch eine
dequeihren Zweck erfüllen würde. Da eignet sich aber (wie bereits durch mich angedeutet - oder auch nicht) einestd::listbesser.Nö, ein std::vector natürlich.
Der ist ein vollwertiger Stack, er stellt push_back, pop_back und empty bereit.Du hast
back()vergessen. Undemptywird gar nicht benötigt...