Initialisere en peker til en klasse med nullverdier

stemmer
2

Jeg Tring å intialize en rekke pekere til en NODE struct som jeg gjorde

struct Node{
    int data;
    Node* next;
};

the private member of my other class is declared as

Node** buckets;

Det er for tiden initialisert som bøtter = new Node * [STØRRELSE]

Er det allikevel å initial matrisen slik at medlemmene peker til NULL eller annen forhåndsdefinert Node peker?

EDIT: Jeg er på utkikk etter en måte å initilize det uten å prøve å generere en for loop å traversere gjennom hele lengden av tabellen. Størrelsen av rekken bestemmes under kjøring.

EDIT 2: Jeg prøvde std :: fill_n (bøtter, SIZE_OF_BUCKET, NULL); men kompilatoren gir feilmeldingen kan ikke konvertere fra 'const int' til 'Node *' Jeg bruker Visual Studio 2008. Er det noe galt som jeg gjør?

Publisert på 27/08/2009 klokken 03:44
kilden bruker
På andre språk...                            


2 svar

stemmer
7

Først av alt, er den enkleste løsningen for å gjøre følgende:

Node** buckets = new Node*[SIZE]();

Som litb tidligere nevnt, vil denne verdien initial SIZEpekere til NULL pekere.

Men hvis du ønsker å gjøre noe sånt Node **buckets, og initial alle pekere til en bestemt verdi, så jeg anbefaler std::fill_nfra<algorithm>

Node **buckets = new Node*[SIZE];
std::fill_n(buckets, SIZE, p);

dette vil sette hver enkelt Node*'til petter tildeling.

I tillegg, hvis du vil at Node å ha tilregnelig medlem valuesupon konstruksjon, er den riktige måten å ha en konstruktør. Noe sånt som dette:

struct Node {
    Node() : data(0), next(NULL){}
    Node(int d, Node *n = NULL) : data(d), next(n) {}

    int data;
    Node* next;
};

På den måten du kan gjøre dette:

Node *p = new Node();

og det vil være riktig initialisert med 0 og NULL, eller

Node *p = new Node(10, other_node);

Til slutt, gjør dette:

Node *buckets = new Node[N]();

vil bygge N Nodegjenstander og standard konstruere dem.

Svarte 27/08/2009 kl. 03:59
kilden bruker

stemmer
1

Hvis du mener med matrise array-of-pekere buckets, så ja. Bare sett buckets = NULL.

Edit: basert på spørsmålet ditt redigere, bare bruk memset.

memset(buckets, 0, NUM_ELEMENTS_IN_BUCKETS*sizeof(Node*));
Svarte 27/08/2009 kl. 03:47
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more