-1
我在我的自定義結構中有一個std::unordered_map<char, Node*>
。 我想用空的map
對它進行初始化。我做錯什麼了嗎? 我已經嘗試了2種初始化,他們都給了我相同的結果。在我的結構中初始化一個空的unordered_map在C++中
下面的語句:
newStructure->map = unordered_map<char, Node*>();
有時會導致成功,該地圖的大小爲0,這是應該的。在大多數情況下,這將在初始化過程中失敗,並會以沒有初始化的map
來生成以下錯誤:
的malloc:被釋放的指針沒有被分配
這會給我初始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新?](https://stackoverflow.com/questions/184537/in-what-cases-do-i-use-malloc-vs-new) –