c++中的sort只可以对vector排序,因此如果对unordered_map自定义排序,需要放在vector中。
以lc386为例:
class Solution {
public:
static bool cmp(pair<string, int> &a, pair<string, int> &b){
return a.first < b.first;
}
vector<int> lexicalOrder(int n) {
vector<int> result;
vector<pair<string, int>> tVector;
unordered_map<string, int> mapp;
for(int i = 0;i<n;i++){
mapp[to_string(i+1)] = i+1;
}
for(auto iter = mapp.begin();iter!=mapp.end();iter++){
tVector.push_back(make_pair(iter->first, iter->second));
}
sort(tVector.begin(), tVector.end(), cmp);
for(auto it = tVector.begin();it!=tVector.end();it++){
result.push_back(it->second);
}
return result;
}
};