Как увеличить конкретное значение хэш-таблицы без изменения ее ключа? - PullRequest
0 голосов
/ 31 мая 2019

Я перебираю массив чисел (0-9) и хочу сохранить там вхождение в хеш-таблицу с этим.

int ar[size]={0,2,0,1,4,6,8 ........ 8,6,7}; // array
auto hash=new int[10];   //here the value is initialized to zero

for(int i=0;i<size;i++)
  {
   //here i want to store the time a number occurred in the array with 
   keys as number itself

  hash[ar[i]] = **valueof(hash[ar[i]])+1** // i want to do this
  }

Редактировать

auto hash=new int[10]();

Ответы [ 2 ]

2 голосов
/ 31 мая 2019

Вы можете увеличить значение на месте:

hash[ar[i]]++;

Также:

// Not true:
auto hash=new int[10];   //here the value is initialized to zero

Вы должны добавить инициализатор:

auto hash=new int[10]();   //here the value is initialized to zero

Справка:

Если тип является типом массива, массив объектов инициализируется.

  • Если инициализатор отсутствует, каждый элемент инициализируется по умолчанию
  • Если инициализатор представляет собой пустую пару скобок, каждый элемент инициализируется значением.

https://en.cppreference.com/w/cpp/language/new

Кроме того, выделение кучи на самом деле не нужно, вы можете просто использовать int hash[10] = {0} или std::array<int, 10> hash; hash.fill(0).

0 голосов
/ 31 мая 2019

Вы можете использовать следующую строку кода:

hash[ar[i]] += 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...