gpt4 book ai didi

c++ - 使用 STL 映射作为结构的成员

转载 作者:太空宇宙 更新时间:2023-11-03 10:31:55 24 4
gpt4 key购买 nike

我正在构建一个结构,其中一个成员是 map 。
第一个问题这是允许的吗?编译器没有提示。

struct A {  
map<int, float> B;
}

稍后我声明了一个这种数据类型的数组。

A *C = (A *)INTERNAL_CALLOC(..., sizeof(A));  

这里的函数 INTERNAL_CALLOC 是 MALLOC 的函数包装器。
稍后在代码中,当我第一次尝试将一个项目插入到数组的第一个元素的映射中时,我得到了一个核心转储。

C[0].B[0] = 0.001;  

知道为什么会这样吗?
谢谢!

最佳答案

是的,结构中的映射没问题。

使用 malloc 分配绝对好;不调用构造函数。因此,当您尝试使用您的 map 时,它很可能会做一些糟糕的事情。

一般经验法则:不要在 C++ 中使用 malloc/calloc/realloc/free。尽可能避免动态分配,不可避免时使用new/delete*


* 并阅读智能指针

关于c++ - 使用 STL 映射作为结构的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14270068/

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