从set中删除共享ptr元素可以通过以下步骤实现:
下面是一个示例代码:
#include <iostream>
#include <set>
#include <memory>
#include <algorithm>
struct MyClass {
int data;
};
int main() {
// 创建一个存储共享指针的set容器
std::set<std::shared_ptr<MyClass>> mySet;
// 添加共享指针元素到set中
mySet.insert(std::make_shared<MyClass>(MyClass{1}));
mySet.insert(std::make_shared<MyClass>(MyClass{2}));
mySet.insert(std::make_shared<MyClass>(MyClass{3}));
// 创建一个共享指针对象,指向要删除的元素
auto ptrToDelete = std::make_shared<MyClass>(MyClass{2});
// 使用find_if算法和lambda表达式查找要删除的元素
auto it = std::find_if(mySet.begin(), mySet.end(), [&](const std::shared_ptr<MyClass>& ptr) {
return *ptr == *ptrToDelete;
});
// 如果找到了要删除的元素,使用erase函数删除它
if (it != mySet.end()) {
mySet.erase(it);
}
// 输出剩余的元素
for (const auto& ptr : mySet) {
std::cout << ptr->data << " ";
}
std::cout << std::endl;
return 0;
}
这个示例代码演示了如何从存储共享指针的set容器中删除特定的共享指针元素。在示例中,我们创建了一个存储MyClass对象的set容器,并使用共享指针包装它们。然后,我们创建了一个共享指针对象,指向要删除的元素。使用find_if算法和lambda表达式,我们在set中查找要删除的元素。如果找到了,我们使用erase函数删除它。最后,我们输出剩余的元素。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云