std::list存储std::unique_ptr,用给定的指针进行删除的示例
时间: 2024-01-19 13:04:24 浏览: 266
YOLO算法-城市电杆数据集-496张图像带标签-电杆.zip
下面是一个示例代码,演示了如何使用 std::list 存储 std::unique_ptr,并使用给定的指针进行删除:
```c++
#include <iostream>
#include <list>
#include <memory>
int main() {
// 创建一个 std::list,存储 std::unique_ptr
std::list<std::unique_ptr<int>> mylist;
// 向 std::list 中添加元素
mylist.push_back(std::make_unique<int>(1));
mylist.push_back(std::make_unique<int>(2));
mylist.push_back(std::make_unique<int>(3));
// 输出 std::list 中的元素
for (const auto& ptr : mylist) {
std::cout << *ptr << " ";
}
std::cout << std::endl;
// 使用给定的指针进行删除
int* ptr = mylist.front().get();
mylist.remove_if([ptr](const std::unique_ptr<int>& p) { return p.get() == ptr; });
// 输出删除后的 std::list
for (const auto& ptr : mylist) {
std::cout << *ptr << " ";
}
std::cout << std::endl;
return 0;
}
```
在上面的示例代码中,我们首先创建了一个 std::list,存储了三个 std::unique_ptr。然后,我们使用 std::list 的 remove_if 函数和 lambda 表达式,根据给定的指针删除了一个元素。最后,我们输出删除后的 std::list,验证删除操作是否成功。
阅读全文