从 std::multiset 移动元素

Move elements from std::multiset

是否可以将元素从 std::multiset 中移出?

自 C++11 起 std::multiset::iterator 被定义为常量 bidirectional_iterator。我知道原因是为了保持元素排序,但似乎没有办法删除然后修改仅移动对象。

我不认为你可以用 std::multiset 做到这一点,尽管它应该可以用 Boost 的 multi_index_container 来实现。它有一个 modify() 方法,它接受一个迭代器和一个更新仿函数。在该仿函数中,您应该能够将值移走。

有关详细信息,请参阅提升 multi_index documentation