C++ 如何在不更改哈希表键的情况下增加哈希表的特定值?

C++ 如何在不更改哈希表键的情况下增加哈希表的特定值?,c++,arrays,algorithm,hash,C++,Arrays,Algorithm,Hash,我正在遍历一个数字数组(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 wit

我正在遍历一个数字数组(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
  }

可以就地增加值:

hash[ar[i]]++;
此外:

您必须添加初始值设定项:

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

如果类型是数组类型,则初始化对象数组

  • 如果缺少初始值设定项,则每个元素都默认初始化
  • 如果初始值设定项是一对空括号,则每个元素都是值初始化的


另外,实际上并不需要堆分配,您可以简单地使用
int hash[10]={0}
std::array hash;hash.fill(0)

您可以就地增加值:

hash[ar[i]]++;
此外:

您必须添加初始值设定项:

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

如果类型是数组类型,则初始化对象数组

  • 如果缺少初始值设定项,则每个元素都默认初始化
  • 如果初始值设定项是一对空括号,则每个元素都是值初始化的


另外,实际上并不需要堆分配,您可以简单地使用
int hash[10]={0}
std::array hash;hash.fill(0)

您可以使用以下代码行:

hash[ar[i]] += 1

您可以使用以下代码行:

hash[ar[i]] += 1

下标运算符返回对该值的引用,因此您只需增加它<代码>++hash[ar[i]]-另外,您是否有任何理由需要动态分配
哈希
?它可能更容易使用,或者如果大小可以更改,您是否尝试过这样做:
hash[ar[i]]=hash[ar[i]]+1
?之后,您是否希望在
valueof(hash[ar[i]])+1上查找表中的任何内容?如果在原始值的散列创建了then key后更改该值,则搜索新值将不再散列到正确的键。下标运算符返回对该值的引用,因此您可以将其递增<代码>++hash[ar[i]]-另外,您是否有任何理由需要动态分配
哈希
?它可能更容易使用,或者如果大小可以更改,您是否尝试过这样做:
hash[ar[i]]=hash[ar[i]]+1
?之后,您是否希望在
valueof(hash[ar[i]])+1上查找表中的任何内容?如果在创建了原始值的散列后更改该值,则搜索新值将不再散列到正确的键。数组初始化中的
-
是我不熟悉的技巧,还是键入错误?数组初始化中的
-
是我不熟悉的技巧,还是键入错误?