gpt4 book ai didi

c++ - 如何有效删除存储在多个容器中的C++对象?自动指针?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:05:26 26 4
gpt4 key购买 nike

我有一个应用程序在执行期间创建某种对象(比方说,“Foo”类),以跟踪一些统计数据,并将它们插入到两个 STL 映射中的一个或两个中,比如:

map<Foo*, int> map1;
map<Foo*, int> map2;

我想知道删除 Foo 对象的最佳方法是什么。目前我的解决方案是迭代 map1 和 map2,并将 Foo 指针放入一个集合中,然后在这个集合上进行交互并在每个集合上调用 delete。

是否有更有效的方法,可能使用 auto_ptr?如果是这样的话,因为 auto_ptr<> 对象不能存储在 STL 容器中?

提前致谢。

最佳答案

auto_ptr 对象不能像您所说的那样存储在 STL 容器中。为此,我喜欢使用 shared_ptr 对象(来自 boost)。它是一个被引用的计数指针,所以当对象超出范围时,它只会被删除一次。

typedef<shared_ptr<Foo>, int> Map;
Map map1;
Map map2;

现在,您只需在 map1map2 中添加和删除 shared_ptr 对象,因为它们是指针,它们会处理删除,当最后一个引用被删除时。

关于c++ - 如何有效删除存储在多个容器中的C++对象?自动指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1388065/

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