PDA

Visualizza la versione completa : [C ++] realizarre le funzioni push_back e pop_back (codice)


DarioBaldini
27-05-2010, 10:50
Ciao a tutti , ho un compito dŽ informatica in cui devo realizzare la push_back della classe vector..

In altre parole io ho una lista di numeri interi separati dalla virgola-( array _list*)

qua ho costruttori e decostruttori del mio programma.



// __________________________________________________ __________________________
ListOfIntegers::ListOfIntegers()
{
_list= NULL;
_size = -1;
}

// __________________________________________________ __________________________
ListOfIntegers::~ListOfIntegers()
{
if (_list != NULL)
{
delete[] _list;
_capacity = _size;
}
}



la classe push_back



void ListOfIntegers::push_back(int x)
{
_size = _capacity+1;
_list = new int[_size];

//................... non riesco a capire come copiare o "rintracciare"i numeri precedenti della lista...
_list [_size] = x;
}


______ classe file.h._________

// Class realizing a list of integers.
class ListOfIntegers
{
public:
// Constructor.
ListOfIntegers();

// Destructor.
~ListOfIntegers();

int getElement(int i);
int getSize(void);
int pop_back(void);
void push_back( int x);

void printListOfIntegers(const char* prefix);

void parseListOfIntegers(const char* listAsString);

void interLeaveListOfIntegers(ListOfIntegers* _list1, ListOfIntegers* _list2);
private:
int* _list;
int _size;
int _capacity;
};

Secondo lŽesercizio devo realizzare i due metodi pop und push_back con la lŽaiuto della variabile _capacity.
_list é lŽarray dove sono presenti i numeri.

Io credo che la grandezza _size della lista attraverso il deconstruttore riesco a trovarla , quello che non riesco a fare come ho giä scritto é a rintracciare i diversi numeri della lista... :dhò: :dhò:
UnŽaltra domanda perché se scrivo questo codice non viene letto il valore di x nella cella _size?


void ListOfIntegers::push_back(int x)
{
_size = _capacity+1;
_list = new int[_size];
_list[_size] = x;
}
// Mentre se scrivo cosí implicito funziona? (supponendo che la lista precedente aveva grandezza 3)

void ListOfIntegers::push_back(int x)
{
_size = _capacity+1;
_list = new int[_size];
_list[4] = x;
}

Loading