Я немного изучал хеш-таблицы и как их создавать с помощью цепочек в C ++. В примере кода, который я нашел, список и сегменты объявляются следующим образом:
int bucket;
std::list<int> *table;
Затем в других местах программы что-то подобное называется:
table[bucket].push_back(1);
Мой вопросПочему, объявляя * table, я могу использовать оператор скобки [], но если я объявляю его без *, тогда я больше не могу использовать оператор скобки?
ex:
std::list<int> *table;
table[bucket].... OKAY
std::list<int> table;
table[bucket]... NOT OKAY
Так что когда * используется, этокак будто есть список в каждом ведре. поэтому таблица [1] - это список, таблица [2] - это другой список. Как они достигают этого с помощью *?
Я заметил, что я могу сделать это и с другими типами
ex:
int *test;
test[index]... OKAY
int test;
test[index]... NOT OKAY
это, очевидно, связано с объявлением указателя, но после бесчисленного количествачитая и оглядываясь вокруг, я не могу этого понять. Я думаю, что "std :: list * table" создает указатель на список. Но это ничего не говорит о том, как я теперь могу использовать [].
Любое разъяснение очень ценится.