Я читал пример реализации хеш-таблицы на C ++ с веб-сайта и увидел это.
private:
HashEntry **table;
public:
HashMap() {
table = new HashEntry*[TABLE_SIZE];
for (int i = 0; i < TABLE_SIZE; i++)
table[i] = NULL;
}
Строка с синтаксисом, который я не понимаю:
table = new HashEntry*[TABLE_SIZE];
Что значит иметь звездочку перед такими скобками?
new HashEntry*[TABLE_SIZE]
выделяет и создает массив TABLE_SIZE
элементы, где каждый элемент является HashEntry*
то есть указатель на HashEntry
,
Более современная C ++ версия этого будет:
private:
std::vector<std::unique_ptr<HashEntry>> table;
public:
HashMap() : table(TABLE_SIZE) {}
Это позволяет избежать необходимости определять собственный деструктор и, как правило, безопаснее.
Звездочка указывает, что это указатель
Вот несколько ссылок
http://www.cprogramming.com/tutorial/c/lesson6.html