C++;二维阵列编码 我尝试学习C++,并尝试编写一个简单的哈希表的代码,如以下结构: array[0][0] array[0][1] array[0][2] key 1 value 1 value 2 array[1][0] array[1][1] key 2 value 3 array[2][0] array[2][1] array[2][2] key 3 value 4 value 5

C++;二维阵列编码 我尝试学习C++,并尝试编写一个简单的哈希表的代码,如以下结构: array[0][0] array[0][1] array[0][2] key 1 value 1 value 2 array[1][0] array[1][1] key 2 value 3 array[2][0] array[2][1] array[2][2] key 3 value 4 value 5,c++,C++,表示动态数组的数组。下面是我的代码: #include<iostream> #include<conio.h> using namespace std; int ele [10] ; int** arrays = new int*[10] ; class HashTable { public: HashTable() { for(int i = 0 ; i < 10 ; i++) ele[

表示动态数组的数组。下面是我的代码:

#include<iostream>
#include<conio.h>

using namespace std;

 int ele [10] ;
 int** arrays = new int*[10] ;

class HashTable
{
   public:

    HashTable()
    {    
         for(int i = 0 ; i < 10 ; i++)
         ele[i] = - 1 ;     // element array stores the number of elements in column of each row
    }

    void put(int key, int value){
         if(ele[key] == -1){
         arrays[key] = new int[1];
         arrays[key][0] = value ;  // initialize 2nd dimention
         ele[key] = 0 ; 
         }
         else{
              int num = ele[key] ;
              int temp[num + 1] ;
              for(int i = 0 ; i < num ; i++)
              temp [i] = arrays[key][i] ;
              temp[num+1] = value ;
              arrays[key] = new int[num + 1] ;
              for(int i = 0 ; i < num+1 ; i++)       // take all the elements in an temporary array and store it back
              arrays[key][i] = temp [i] ;
              ele[key] = num + 1 ;
              }

         }

};

main()
{

HashTable object;

 object.put(0 , 100);
 object.put(1 , 200);
 object.put(3 , 300);
 object.put(3 , 3000);
 object.put(3 , 30000);
 object.put(5 , 500);
 object.put(5 , 5000);
 object.put(5 , 50000);
 object.put(5 , 50); 


for (int i = 0 ; i < 10 ; i++ ){
int j = ele[i] ;

cout << j << " K ";

if(j != -1){
for (int k = -1 ; k < j ; k++ )    // print the values of corresponding keys
cout << arrays[i][k] << "  ";
}
}


 getch();
   return 0;
}
#包括
#包括
使用名称空间std;
int ele[10];
整数**数组=新整数*[10];
类哈希表
{
公众:
哈希表()
{    
对于(int i=0;i<10;i++)
ele[i]=-1;//元素数组存储每行列中的元素数
}
无效放置(int键,int值){
如果(元素[键]=-1){
数组[key]=newint[1];
数组[key][0]=value;//初始化第二个维度
ele[key]=0;
}
否则{
int num=ele[key];
内部温度[num+1];
for(int i=0;i
for (int k = -1 ; k < j ; k++ )
    cout << arrays[i][k] << "  ";
for(int k=-1;k我能不能要求你读一本好书,读一章关于数组的内容……至少读5遍。你的代码中有很多错误,我不知道从哪里开始。PS。这不是一个哈希表,甚至不近。@aleguna,一点指针会很有帮助。“为什么上面的代码在尝试检索值时给出了错误的输出值?”:它输出什么?我被上面的代码卡住了。解决问题后我会重写它。@Raedwald它应该在main中为I=0输出值100,为I=1输出值200,300。