私のカスタム構造内にstd::unordered_map<char, Node*>
があります。 空にするmap
で初期化します。私は間違ったことをしましたか? 2種類の初期化を試しましたが、どちらも同じ結果をもたらします。私の構造体内の空のunordered_mapをC++で初期化
次の文は:
newStructure->map = unordered_map<char, Node*>();
時には成功をもたらし、このマップの大きさは、それがあるべき0、です。 malloc関数
:ほとんどの時間、これは初期化中に失敗し、次のエラーが
map
の無い初期化して生成されるポインタが解放されているが
を割り当てられていませんでしたこれは私を与えるだろう極端な巨大なサイズの最初のstd::unordered_map
。地図のサイズは88029716824088
です。
空のstd::unordered_map
構造体を正しく初期化するにはどうすればよいですか?
私の構造は次のように定義されています。
struct Node {
char letter;
unordered_map<char, Node*> next;
bool hasEnd;
static Node* init(char);
}
そして、私のinitializer
はこのように定義されています
Node* Node::init(char letter) {
Node *newNode = (Node*) malloc(sizeof(Node));
newNode->letter = letter;
newNode->hasEnd = false;
return newNode;
};
時には、next
のサイズは非常に膨大な数になります。
マップを定義すると既に空です。 – user1438832
@ user1438832ですが、マップのサイズが非常に大きくなることがありました。それはどうすれば可能ですか? – Judgelight
あなたは 'malloc'を使ってC++オブジェクトを割り当てていませんか? [どのような場合にmalloc vs newを使うべきですか?](https://stackoverflow.com/questions/184537/in-what-cases-do-i-use-malloc-vs-new) –