14 #include <boost/container/flat_map.hpp>
23 template <
typename Value,
typename Key = std::
size_t>
24 using IndexMultimap = boost::container::flat_multimap<Key, Value>;
31 template <
typename Value,
typename Key>
33 const IndexMultimap<Value, Key>& multimap) {
35 typename IndexMultimap<Key, Value>::sequence_type unordered;
36 unordered.reserve(multimap.size());
37 for (
const auto& keyValue : multimap) {
39 unordered.emplace_back(keyValue.second, keyValue.first);
42 IndexMultimap<Key, Value> inverse;
43 inverse.adopt_sequence(std::move(unordered));