c – 在集合之间移动`unique_ptr`

前端之家收集整理的这篇文章主要介绍了c – 在集合之间移动`unique_ptr`前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个集合和一个元素的迭代器:
set<unique_ptr<X>> a,b;
set<unique_ptr<X>>::iterator iter = find something in a;

我想从a中删除iter指向的元素并将其插入到b中.可能吗?怎么样?

解决方法

好吧,我怀疑没有正常的方法可以做到这一点.但总有一个非正常的:)
您可以执行以下操作:
auto tmp = const_cast<std::unique_ptr<std::string>&&>(*iter);
a.erase(iter);
b.insert(std::move(tmp));

好吧,第一行违反了set invariant并且它很可怕但是据我所知它应该不是问题,因为在下一行我们从集合中删除了这个邪恶的节点.

原文链接:https://www.f2er.com/c/118783.html

猜你在找的C&C++相关文章