gpt4 book ai didi

c++ - 如何从 std::list 中正确删除指针?

转载 作者:行者123 更新时间:2023-11-30 00:38:28 28 4
gpt4 key购买 nike

我正在通过 new 创建对象,然后在设置对象后添加指向 std::list 的指针。

在不导致内存泄漏的情况下,删除指针并从列表中删除数据的正确方法是什么?

最佳答案

与其手动循环搜索元素,不如使用 std::find_if

auto it = std::find_if(lst.begin(), 
lst.end(),
[&val](datalist const &d) { return d.index == val; });

if ( it != lst.end() )
{
delete *it;
lst.erase(it);
}

这并不是说您做错了。

但是,如果您考虑使用某种形式的智能点,例如 std::unique_ptrstd::shared_ptr 或 boost 的智能指针,您的代码将会改进,那么您就不必自己管理内存了。

关于c++ - 如何从 std::list 中正确删除指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10854274/

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