这将是按单个地图 c++ 大小的升序对无序地图的向量进行排序的最佳方法

Which will be the best way to sort vector of unordered map by ascending order of the size of individual map c++

假设,我们有一个无序映射向量作为 vector> 记录集;

我的代码是这样的,

std::vector<string> inputStrings;
for(int i =0;i<6;i++)
{
    string tmp;
    cin >> tmp;
    inputStrings.push_back(tmp);
}

vector<unordered_map<char,int>> recordset;
for(int i=0;i<(int)inputStrings.size();++i)
{
    for(int j = 0; j < (int)inputStrings[i].length(); j++)
    {
        (recordset[i])[(inputStrings[i])[j]]++;
    }
}

这将是按地图元素的大小升序对上述向量 recordset 进行排序的有效方法。

std::sort 可以采用第三个参数来指定如何对元素进行排序。传递 lambda 函数应该有好的方法。如果第一个参数应该在第二个参数之前,函数 shold return true 否则 false

std::sort(recordset.begin(), recordset.end(),
    [](const unordered_map<char,int>& a, const unordered_map<char,int>& b) -> bool {
        return a.size() < b.size();
    }
);