void HashTable::GetTable(string filename){// Функция считывания из файла
ifstream f(filename);
f >> SIZEOFTABLE;
CreateTable();// Тут просто делаю резайз на SIZEOFTABLE
string temp_name;
num temp_number;
while(!f.eof()){
f >> temp_name;
f >> temp_number;
Table(temp_name, temp_number);// Считываю в след функцию
OutPutTable();
}
}
void HashTable::Table(string name, num number){
if(FullSize()<1){// Функция проверки "забитости" вектора, скидывать не буду, просто проверяет есть ли пустые элементы, если нет - 0
SIZEOFTABLE += step;// Увеличиваю переменную размера на шаг (по умолчанию шаг у меня 2)
Table.resize(SIZEOFTABLE);// Увеличиваю таблицу
}
int key;
key = HashFunction(name);// Функция хеширования. Тоже не особо нужна, возвращает значения, не выходящие за размер, либо равные размеру. Мой массив из 50 элементов, максимальный хэш - 50
if(key >= SIZEOFTABLE){// Больше равно на всякий случай, по факту только равно
key =0;// Если элемент равен 50, кидаю его в начало
}
AddInTable(key, name, number, SIZEOFTABLE);// отправляю данные в функцию заполнения
}
void HashTable::AddInTable(int key, string name, num number, int last){
bool good =false;
while(key < last && good !=true){// просматриваем до last или пока не найдем место
if(Table[key].value==0){// если нашли сразу - збс
Table[key].name= name;
Table[key].number= number;
Table[key].value=1;
good =true;
}
else{// иначе сдвигаемся на шаг
key += step;
}
}
if(good ==false){// если не нашли место для элемента, т.е. дошли от key до last, пробуем найти место с начала (от 0 до key)
prog.cpp:1:6: error: 'HashTable' has not been declared
void HashTable::GetTable(string filename) { // Функция считывания из файла
^
prog.cpp:1:26: error: variable or field 'GetTable' declared void
void HashTable::GetTable(string filename) { // Функция считывания из файла
^
prog.cpp:1:26: error: 'string' was not declared in this scope