gpt4 book ai didi

c++11 - 如何通过指针从容器中删除 unique_ptr?

转载 作者:行者123 更新时间:2023-12-02 18:36:42 27 4
gpt4 key购买 nike

使用 unique_ptr 创建对象并赋予容器所有权是没有问题的。如何通过原始指针删除元素?

std::set<std::unique_ptr<MyClass>> mySet;

MyClass *myClass = new MyClass();
mySet.insert(std::unique_ptr<MyClass>(myClass));

// remove myClass from mySet?

最佳答案

您需要找到与 myClass 元素对应的迭代器,然后将该迭代器传递给 mySet.erase()。可以使用 std::find_if 算法和自定义 Predicate 仿函数来找到迭代器,该仿函数了解如何取消引用 unique_ptr 并将其与原始值进行比较指针myClass

您不能使用重载的 size_t set::erase ( const key_type& x ); 因为原始指针(即使包装在临时 unique_ptr 中)不会被在 mySet 中找到。

关于c++11 - 如何通过指针从容器中删除 unique_ptr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6905336/

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