C++ 将数组元素插入哈希表

C++ 将数组元素插入哈希表,c++,arrays,hashtable,C++,Arrays,Hashtable,我想写一些代码,将数组中的元素插入下面的哈希表。我使用数组“a”作为测试数组,看看是否可以将元素插入哈希表。但是,当我运行代码时,只有第一个元素被插入到哈希表中,其余的键保持为空 #include<iostream> #include<cstdlib> #include<string> #include<cstdio> using namespace std; struct table { int key; int val;

我想写一些代码,将数组中的元素插入下面的哈希表。我使用数组“a”作为测试数组,看看是否可以将元素插入哈希表。但是,当我运行代码时,只有第一个元素被插入到哈希表中,其余的键保持为空

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstdio>
using namespace std;

struct table
{
    int key;
    int val;
    table()
    {
        
    }
    table(int k, int v)
    {
        key = k;
        val = v;
    }
};
 
void INSERT(table T[], table x)
{
    T[x.key] = x;
}
 
void DELETE(table T[], table x)
{
    T[x.key] = table(0, 0);
}
 
table SEARCH(table T[], int k)
{
    return T[k];
}
 
int main()
{
    int a[] = {15, 11, 27, 8, 12}; 
    int n = sizeof(a)/sizeof(a[0]);
    int i, key, val;
    table T[n];
    table x;
    for(i = 0; i < n; i++) {
        T[i] = table(0, 0);
        key=i+1;
        val=a[i];
        INSERT(T, table(key, val));
        
        x = SEARCH(T, 1);
        if (x.key == 0)
        {
            cout<<"No element inserted at the key "<< key <<endl;
        } else {
            cout<<"Element at key "<< key <<" is-> "<< x.val <<endl;
        }
    }
    return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
结构表
{
int键;
int-val;
表(
{
}
表(整数k,整数v)
{
key=k;
val=v;
}
};
空白插入(表T[],表x)
{
T[x.key]=x;
}
作废删除(表T[],表x)
{
T[x.key]=表(0,0);
}
表搜索(表T[],int k)
{
返回T[k];
}
int main()
{
INTA[]={15,11,27,8,12};
int n=sizeof(a)/sizeof(a[0]);
int i,key,val;
表T[n];
表十;
对于(i=0;i问题出在这条线上

x=搜索(T,1);
键替换
1

x=搜索(T,键);

这一行有问题

x=搜索(T,1);
键替换
1

x=搜索(T,键);

在这里,您传入了调用站点INSERT(),1作为k,因此增量
您设置的(键+=1)将不会被使用,键1处的值将永远不会被搜索。在迭代过程中,它将继续搜索k=1处不存在的值 您设置的(键+=1)将不会被使用,并且键1处的值将永远不会被搜索。在迭代过程中,它将继续搜索不存在的k=1处的值