私は、私は、私は次のコードが出ているオンラインチュートリアルを使用して学んだことでハッシュテーブルを構築しようとしていますC++ハッシュチェーン機能
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
const int SIZE = 100;
int hash(string);
class Node
{
public:
Node();
Node(string);
int hash(int value);
private:
string data;
Node* next;
friend class HashTable;
};
Node::Node() {
data = "";
next = NULL;
}
Node::Node(string) {
data = "";
next = NULL;
}
int Node::hash(int value) {
int y;
y = value % SIZE;
}
class HashTable {
public:
HashTable();
HashTable(int);
~HashTable();
void insertItem(string);
bool retrieveItem(string);
private:
Node* ht;
};
HashTable::HashTable() {
ht = new Node[SIZE];
}
HashTable::HashTable(int max) {
ht = new Node[max];
}
HashTable::~HashTable() {
delete[] ht;
}
void HashTable::insertItem(string name) {
int val = hash(name);
for (int i = 0; i < name.length(); i++)
val += name[i];
}
bool HashTable::retrieveItem(string name) {
int val = hash(name);
if (val == 0) {
cout << val << " Not Found " << endl;
}
else {
cout << val << "\t" << ht->data << endl;
}
}
void print() {
//Print Hash Table with all Values
}
int main() {
HashTable ht;
ht.insertItem("Allen");
ht.insertItem("Tom");
ht.retrieveItem("Allen");
//data.hash(int val);
//cout << ht;
system("pause");
return 0;
}
int hash(string val) {
int key;
key = val % SIZE;
}
私は、文字列値を挿入し、かどうかを検証しようとしていますnameは、retrieveItem関数を使用して存在します。 また、HashTableの値を印刷するにはどうすればいいですか?
ご協力いただければ幸いです。
ビシュ
ライブラリスレッドセーフハッシュマップの使用インテルスレッドビルディングブロックのSTLハッシュマップ または を使用 –
私のコードは動作しません!コードのどの部分が間違っていますか?コード全体が間違っている場合、解決策は何ですか? – Vish
多くのことが間違っています。 2つのコンストラクタがあり、長さを保存しない場合、配列の大きさはどのように分かりますか?なぜあなたは文字列にモジュラスを使用しようとしていますか? 'insertItem'には何も挿入しておらず、' retrieveItem'には何も返していません。 –