这将是按单个地图 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();
}
);
假设,我们有一个无序映射向量作为 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();
}
);