-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) –