gpt4 book ai didi

c++ - boost 分配 : using objects with map_list_of?

转载 作者:太空狗 更新时间:2023-10-29 20:06:33 25 4
gpt4 key购买 nike

将 C++ 与 boost 结合使用。在 Boost.Assign 中,我可以将 new 运算符与 map_list_of 一起使用吗?

例如:

std::map<int, MyObject*> objects = boost::assign::map_list_of
(1, new MyObject())(2, new MyObject())(3, new MyObject())

如果不行,还有其他方法吗?

最佳答案

它确实有效,是的;调用 new 只是返回一个指向 MyObject 的指针,它可以在该类型有效的任何地方使用。 但是 对 new 的调用可能会引发异常,或者 MyObject 的构造函数可能会引发异常,这意味着您的堆分配 MyObjects 的整个映射将被泄露。

如果您想要异常安全并且不必费心删除这些对象,您应该改用智能指针:

std::map<int, boost::shared_ptr<MyObject> > objects = boost::assign::map_list_of<int, boost::shared_ptr<MyObject> >
(1, new MyObject())
(2, new MyObject())
(3, new MyObject());

关于c++ - boost 分配 : using objects with map_list_of?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7531878/

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