我有两个集合和一个a
元素的迭代器:
set<unique_ptr<X>> a, b;
set<unique_ptr<X>>::iterator iter = find something in a;
我想从iter
中移除a
指向的元素并将其插入b
。可能吗?怎么样?
答案 0 :(得分:2)
好吧,我怀疑没有正常的方法可以做到这一点。但总有一个非正常的:) 您可以执行以下操作:
auto tmp = const_cast<std::unique_ptr<std::string>&&>(*iter);
a.erase(iter);
b.insert(std::move(tmp));
好的,第一行违反set
不变量并且它很可怕但据我所知它不应该是一个问题,因为在下一行我们从集合中移除了这个邪恶的节点。