Пожалуйста, удалите мои ошибки
#include <iostream> #include <vector> using namespace std; class HashTableExample { private: int currentSize; int maxSize; vector<string> keys; vector<string> vals; int hashkey(string key) { return hash<string>{}(key) % maxSize; } public: HashTableExample() {} HashTableExample(int capacity) { currentSize = 0; maxSize = capacity; for(int i = 0; i < maxSize; i++) { keys.push_back(""); vals.push_back(""); } } string toString() { int k = keys.size(); int v = vals.size(); string str = ""; str += "HashTableExamle [currentSize=" + to_string(currentSize); str += ", maxSize=" + to_string(maxSize) + str += ", keys="; for (int i = 0; i < k; i++) { str += keys[i] + " "; } str += ", vals="; for (int i = 0; i < v; i++) { str += vals[i] + " "; } return str; } void makeEmpty() { currentSize = 0; for(int i = 0; i < maxSize; i++) { keys[i] = ""; vals[i] = ""; } } int getSize() { return currentSize; } bool isFull() { return currentSize == maxSize; } bool isEmpty() { return getSize() == 0; } bool contains(string key) { return get(key) != ""; } void insert(string key, string val) { int tmp = hashkey(key); int i = tmp; do { if (keys[i] == "") { keys[i] = key; vals[i] = val; currentSize++; return; } if (keys[i] == key) { vals[i] = val; return; } i = (i + 1) % maxSize; } while (i != tmp); } string get(string key) { int i = hashkey(key); while (keys[i] != "") { if (keys[i] == key) return vals[i]; i = (i + 1) % maxSize; } return ""; } /** Function to remove key and its value **/ void remove(string key) { if (!contains(key)) return; /** find position key and delete **/ int i = hashkey(key); while (!(key == keys[i])) i = (i + 1) % maxSize; keys[i] = vals[i] = ""; /** rehash all keys **/ for (i = (i + 1) % maxSize; keys[i] != ""; i = (i + 1) % maxSize) { string tmp1 = keys[i], tmp2 = vals[i]; keys[i] = vals[i] = ""; currentSize--; insert(tmp1, tmp2); } currentSize--; } /** Function to print HashTable **/ void printHashTable() { cout << endl << "Hash Table: " << endl; for (int i = 0; i < maxSize; i++) if (keys[i] != "") cout << keys[i] << " " << vals[i] << endl; cout << endl; } }; int main() { cout << "Hash Table" << endl << endl; cout << "Enter size" << endl; int size; cin >> size; HashTableExample hash(size); char ch; do { cout << "\nHash Table Operations\n" << endl; cout << "1. insert " << endl; cout << "2. remove" << endl; cout << "3. get" << endl; cout << "4. clear" << endl; cout << "5. size" << endl; cout << "6. exit" << endl; int choice; cin >> choice; string key, value; cout << endl; switch (choice) { case 1: cout << "Enter key and value" << endl; cin >> key >> value; hash.insert(key, value); break; case 2: cout << "Enter key" << endl; cin >> key; hash.remove(key); break; case 3: cout << "Enter key" << endl; cin >> key; cout << "Value = " << hash.get(key) << endl; break; case 4: hash.makeEmpty(); cout << "Hash Table Cleared\n" << endl; break; case 5: cout << "Size = " + to_string(hash.getSize()) << endl; break; default: cout << "Wrong Entry \n " << endl; break; } /** Display hash table **/ hash.printHashTable(); cout << "Do you want to continue (Type y or n) " << endl; cin >> ch; } while (ch == 'Y' || ch == 'y'); }
Что я уже пробовал:
ошибки не могут удалить хэш-ошибку и ошибку to_string
OriginalGriff
Где же ошибки?
Какие сообщения об ошибках вы получаете?
Что ты сделал, чтобы заполучить их?
Что вы пытались сделать, чтобы исправить их?
SAMI MUSHTAQ
t0_string не объявляется в этой области видимости
хэш не объявляется в этой области
Richard MacCutchan
Какие линии? Я не могу найти никаких ссылок на t0_string
. И вы не определили хэш-объект для вставки, удаления и т. д. функции.
CPallini
Опубликованный код компилируется и отлично работает на моем Linux-боксе.