2017-01-01 4 views
1

Est-il possible de déplacer un élément d'un std :: multiset?Déplacer des éléments de std :: multiset

Puisque C++ 11 std :: multiset :: itérateur est défini comme un consticateur bidirectionnel constant. Je comprends que le raisonnement est de garder les éléments triés, mais il semble qu'il n'y ait aucun moyen de supprimer puis de modifier les objets move only.

+1

comme [extrait] (http://en.cppreference.com/w/cpp/container/multiset/extract) mais pour C++ 11? –

+0

Ahh, oui, tant pis c'est C++ 17. –

+0

probablement un oubli dans C++ 11, pas sûr que vous avez une alternative = \ –

Répondre

0

Je ne pense pas que vous puissiez le faire avec std :: multiset, même si cela devrait être possible avec le multi_index_container de Boost. Il a une méthode modify() qui prend un itérateur et un foncteur de mise à jour. Dans ce foncteur, vous devriez être capable de déplacer la valeur.

Pour plus d'informations, voir Boost multi_index documentation.