pointer array initialization

Jan 23, 2014 at 3:28am
I was stepping through a piece of code for hash map implementation. I did not understand an implementation where the 2 dimensional hash table is assigned memory. Can someone explain what this piece of code does?
 
table = new LinkedHashEntry* [TABLE_SIZE];


Attaching some lines of code before it for more clarity
1
2
3
4
5
6
7
8
private:
   LinkedHashEntry **table;
public:
   HashMap() {
      table = new LinkedHashEntry* [TABLE_SIZE];
      for (int i = 0; i < TABLE_SIZE; i++)
         table[i] = NULL;
   }


I think it will assign memory for LinkedHashEntry pointers for table size. Assuming TABLE_SIZE is 128 here, table will point to 128 LinkedHashEntries. Is that correct?
Jan 23, 2014 at 5:18am
It dynamically allocates an array of pointers - the size of the array of pointers is TABLE_SIZE. Since that's in all-caps, I assume it is a constant, which means that dynamically allocating it is a waste of effort.
Jan 23, 2014 at 6:25am
Hi LB,
Thanks for your reply. You are correct, the TABLE_SIZE value is a constant, but table data structure is the one which will be assigned size dynamically. So can you please tell me why you think it is waste of effort to do something like this
 
table = new LinkedHashEntry* [128];
Jan 23, 2014 at 4:54pm
1
2
3
4
5
6
7
8
private:
   LinkedHashEntry *table[TABLE_SIZE]; //
public:
   HashMap() {
//      table = new LinkedHashEntry* [TABLE_SIZE];
      for (int i = 0; i < TABLE_SIZE; i++)
         table[i] = NULL;
   }
Topic archived. No new replies allowed.