另一种方法是将它们转储到一个向量中,然后对它进行排序:
typedef std::pair<std::string, int> pair; std::vector<pair> v; v.reserve(map1.size()); std::copy(map1.begin(), map1.end(), std::back_inserter(v)); std::sort(v.begin(), v.end(), [](pair const & a, pair const & b) { return a.second < b.second; });
这可能比插入a更快multimap
,因为它只需要一次内存分配.