Почему у вас есть глобальная переменная для вашей хеш-таблицы? Вместо этого вам, вероятно, следует создать структуру или класс, который может содержать размер таблицы и указатель на таблицу, и динамически распределять ее память. Следующий размер имеет размер по умолчанию, но при создании хеш-таблицы вы можете перейти в другом размере, чтобы попробовать разные размеры.
class HashTable {
public:
HashTable(int size = 1010081) : m_size(size) {
m_table = new nlist *[m_size];
}
~HashTable() {
delete[] m_table;
}
// Define getters, setters, etc. here...
private:
int m_size;
struct nlist **m_table;
};
примечание: Я предполагаю (основано на том, что вы пытаетесь реализовать свой собственный хэш-таблицу, и некоторые из ваших предыдущих вопросов), что вы заинтересованы в получении информации о низком уровне реализация хэш-таблицы, и поэтому я даю вам довольно низкий уровень ответа о том, как распределять и освобождать память самостоятельно. В реальной программе, используя std::vector
, как описано в нескольких других ответах, вероятно, будет правильным решением, так как это уменьшит объем бухгалтерского учета, который вам нужно сделать самостоятельно. Опять же, в реальной программе вы, вероятно, не захотите реализовать свою собственную хеш-таблицу, но вместо этого используйте существующую таблицу, например hash_map
(не стандартную, но широко доступную), boost::unordered_map
, или std::tr1::unordered_map
(это находится на трек станет стандартом и основан на boost::unordered_map
).
Нам нужна дополнительная информация. Вы пытаетесь изменить размер хеш-таблицы на лету? Вы можете использовать 'std :: vector' вместо собственного массива, но вам придется переустанавливать все, что уже есть в таблице во время изменения размера. –
re-bucket ??????????? – SuperString
@SuperString Adrian означает, что если вы измените размер вектора после его выделения, вам придется перепроверить, в каких ведрах находится каждый элемент. Я не думаю, что вы спрашивали об изменении размера существующей хеш-таблицы, хотя, я думаю, вы просто спрашивали о том, как создавать хеш-таблицы разных размеров. –