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)
			AddInTable(0, name, number, key);
	}
}