gpt4 book ai didi

c++ - 在我的 C++ 结构中初始化一个空的 unordered_map

转载 作者:搜寻专家 更新时间:2023-10-31 02:09:12 24 4
gpt4 key购买 nike

我有一个 std::unordered_map<char, Node*>在我的自定义结构中。我想用一个空的 map 初始化它.我做错什么了吗?我尝试了 2 种初始化,它们都给我相同的结果。

下面的语句:

newStructure->map = unordered_map<char, Node*>();

有时会成功, map 的大小为 0,这是应该的。大多数情况下,这会在初始化期间失败,并且会在没有初始化 map 的情况下生成以下错误:

malloc: pointer being freed was not allocated

这会给我初始 std::unordered_map 的巨大尺寸. 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 的大小将是一个非常庞大的数字。

最佳答案

在创建 C++ 对象时,您需要使用 new 而不是 malloc
当您创建 map 时,默认情况下它已经是空的。

您可以在此处阅读更多信息:In what cases do I use malloc and/or new?

关于c++ - 在我的 C++ 结构中初始化一个空的 unordered_map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46762640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com