|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | |
|
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
[C++]Stack
Codice:
#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
using namespace std;
template<class T>
class Stack
{
public:
// Constructor with dimension
Stack(int dim) { vet = new T[checkDim(dim)]; };
// Constructor without dimension
Stack() { vet = new T[5]; };
// Check and verify the chosed dimensione
int checkDim(int dim) { return(dim <= 0)?5:dim; };
// The destructor
~Stack(){};
// add a element
void push(T value) { vet[sp++] = value; };
// return a element (and no delete)
T pop() { return vet[sp--]; };
// return a element (and delete)
T pop_d()
{
int index =sp--;
T tmp = vet[index];
delete vet[index];
return tmp;
};
private:
T vet;
int sp;
};
Quote:
__________________
Gnu/Linux User
|
|
|
|
|
|
|
#2 |
|
Member
Iscritto dal: May 2003
Messaggi: 119
|
Penso ke l'errore venga xké vet é dikiarato come un elemento di tipo T e nn come un vettore di T o un puntatore a T.
A qesto punto nn capisco xké nn t da errore il costruttore. Cmq prova a sostituire private: T vet; int sp; con private: T * vet; int sp; |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Oltre a quello segnalato...
delete vet[index]; Questo non si può fare...non puoi cancellare uno alla volta gli elementi di un vettore allocati tutti insieme... I due costruttori li metterei in uno solo (e mancava l'inizializzazione di sp e di un'altra variabile membro che ti tiene la dimensione, altrimenti puoi andare inoverflow): Stack(int d = 5):dim(d),sp(0) { vet = new T[checkDim(dim)]; }; Sulla push devi controllare se sp >= dim...e in tal caso devi generare un'eccezione... Sulla pop devi controllare se sp < 1...e in tal caso devi generare un'eccezione... La pop è sbagliata...se fai la push così: vet[sp++] = value; allora devi fare la pop così: return vet[--sp]; checkDim la metterei come privata... |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
E' buona norma inoltre,indicizzare un qualsiasi container con unsigned int.
...se uno fa container[-3] ? ciao |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:54.



















