更新:一番下に答えてください。
こんにちは、みんな、
「構造体へのポインタの配列」を初期化する方法は? 問題は、配列がメンバー変数であり、コンストラクターで配列の宣言に渡されるサイズが変数エンティティであることです。
typedef struct Node {
string key;
int value;
struct Node * left;
struct Node * right;
}doubly;
class myHashStrKey{
private:
size_t hashsize;
doubly * table[];
public:
myHashStrKey(){
hashsize = ((size_t)-1);
doubly * table[hashsize];
memset(table,NULL,hashsize);// This is giving segmentation fault
}
};
//Called constructor; myHashStrKey sss = myHashStrKey();
ここでは、テーブルを Doubly ノードへのポインターの配列にし、すべてのポインターを NULL に初期化する必要があります。このコードの何が問題なのですか? 上記を実行するための他のより良い方法は何ですか? 前もって感謝します。
アップデート :
議論の後、サイズが大きく失望したことを考慮して、コードを変更しました。しかし、特定の数の NULL 値でベクター テーブルを埋める方法は?以下のコードを試しましたが、動作しません。
<pre><code>
for(int i =0;i < hashsize;i++){
table.push_back((doubly *)NULL);
}
table.insert(table.begin(),hashsize,NULL);
//Both give invalid static_cast from type `int' to type `doubly*'
</code></pre>
回答の更新:
myHashStrKey::table(myHashStrKey::hashsize, static_cast(0));
myHashStrKey::table(myHashStrKey::hashsize);
//Above 2 does not work
for(int i =0;i != myHashStrKey::hashsize;i++){ //lesser than symbol spoils the display
myHashStrKey::table.push_back((doubly *)NULL);
}
//Above works
myHashStrKey::table.insert(myHashStrKey::table.begin(),hashsize,((doubly *)NULL));
//This too works