gpt4 book ai didi

c++ - 使用指向映射的指针从其键访问映射的值

转载 作者:行者123 更新时间:2023-11-28 02:27:14 25 4
gpt4 key购买 nike

我想在 C++ 中动态分配指向 unordered_map 的指针数组。 std::unordered 映射已被定义为“字典”。

dict_array= ( dictionary **) calloc(input_size, sizeof(dictionary*));

现在我想访问各个散列图,对于每个单独的散列图 (mydict),我想使用一些键来访问值。如下所示:

for (int i=0; i< input_size, i++){
dictionary *mydict= dict_array[i];
mydict[some_key]++; /*access the value against 'some_key' and increment it*/
}

但是上面这条针对键访问值的行会产生编译错误。访问它的正确方法是什么?

最佳答案

在您的示例中,您还没有实际分配任何 dictionary 或 (std::unordered_map) 对象。

dict_array[i] 只是一个空指针。因此,对 mydict 的赋值也会导致一个空指针。您需要先通过调用 dict_array[i] = new dictionary(); 来构造一个字典

表达式 mydict[some_key]++ 并不代表你认为的那样,因为 mydict 是一个 dictionary * 而不是一个字典。因此,在访问有效的 dictionary 对象之前,您需要先取消引用它:

(*my_dict)[some_key]++

但同样,在此之前,您需要初始化底层指针。

此外,将 C 分配与 C++ 标准对象混合通常不是一个好主意(这通常会导致未定义的行为)。

关于c++ - 使用指向映射的指针从其键访问映射的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30107622/

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