1

Web サイトから 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];

このように括弧の前にアスタリスクがあるとはどういう意味ですか?

4

2 に答える 2

5

new HashEntry*[TABLE_SIZE]要素の配列を割り当てて構築しTABLE_SIZEます。ここで、各要素は a HashEntry*、つまり a へのポインタHashEntryです。

そのより現代的な C++ バージョンは次のようになります。

private:
  std::vector<std::unique_ptr<HashEntry>> table;
public:
  HashMap() : table(TABLE_SIZE) {}

これにより、独自のデストラクタを定義する必要がなくなり、一般的に安全になります。

于 2015-02-05T06:02:51.153 に答える
0

アスタリスクは、それがポインタであることを示します

ここにいくつかのリンクがあります

http://www.cprogramming.com/tutorial/c/lesson6.html

http://www.tutorialspoint.com/cplusplus/cpp_pointers.htm

http://www.augustcouncil.com/~tgibson/tutorial/ptr.html

于 2015-02-05T06:12:55.313 に答える