Hilfe beim 1.Programm
-
Ich bin nun zu C++ umgestiegen und habe sehr viele Anfängerfragen.
Gerade schreibe ich eines meiner ersten Programme und möchte hierfür in einem Unterprogramm mit Call einen Stack mit 16 Werten programmieren, der zyklisch mit dem Befehl Pop ausgelesen wird.Hierzu habe ich mir einige Gedanken gemacht, finde aber keine sinnvolle Hilfestellung.
...
const int STACK_SIZE=15;
class StackAsFixedVector
...Kann ich die werte im Stack bereits vorher festlegen, ohne den Stack mit push zu befüllen, ähnlich wie unten?
int Liste[15]={1,2,4,8,16,32,64,128,64,32,16,8,4,2,1};
Hoffendlich langweile ich nicht mit meinen fragen, aber ich gelobe Besserung in den nächsten Monaten (bis 1,2 Jahren)
Gruß Sascha
-
Hallo,
hier ein möglicher Ansatz:
class Stack { private: int size; // Größe des Arrays int top; // Spitze des Stacks int *a; // Array mit den Stack-Elementen public: // Konstruktor Stack(int s = 10) : size(s), top(-1) { a = new int[size]; } // Destruktor ~Stack() { delete []a; } void push(const int& item) { a[++top] = item; } int pop() { return a[top--]; } bool isEmpty() const { return top == -1; } bool isFull() const { return top == (size -1); } };
MfG
-
Danke für diese präzise und schnelle Hilfe.
2 kleine fragen zu Deinem Vorschlag hätte ich da noch.
Die Struktur und Vorgehensweise ist mir bekannt, allerdings bin ich noch nicht über das item gestollpert. Was bedeutet es?MfG
-
item ist doch einfach nur ein Name
item istvoid push(const int& item)
eine Referenz auf ein konstantes Objekt (read-only-Bezeichner) d.h. Zugriff auf Varaible auf die item sich bezieht ist nur lesend erlaubt
-
built-in Typen kopiert normalerweise statt sie als konstante Referenz zu übergeben, das lohnt sich nur bei Klassen mit mehreren Variablen!
-
built-in Typen kopiert normalerweise statt sie als konstante Referenz zu übergeben
Normal Schreibt man obiges Konstrukt auch als Template ... und dann machen referenzen wieder sinn ...
Ausserdem kannst du pech haben ... auch das kopieren von Build-In Typen kann laenger dauern wie referenzen. Zeiger/Referenzen sind meist konform zum BS und damit das schnellste was geht (32 bit aufn 32 bit system), Build-In Typen dann nicht. Wenn die unterschiedlich zu 32 bit sind, kannst du pech haben ... (bei groesser bist eh langsamer). Sicher ist das meisst sehr marginal :p und macht erst mit klassen so richtig nen unterschied ....
Ciao ...