前端之家收集整理的这篇文章主要介绍了
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