目录
Map遍历
int findLHS(vector<int>& nums) {
unordered_map<int,int> um; //初始化
for(int i=0;i<nums.size();i++){ //赋值
um[nums[i]]++;
}
int res=0;
for(auto a:um){ //遍历
if(um.find(a.first+1)!=um.end()){ //是否存在某个键 找到了
res=max(res,a.second+um[a.first+1]);
}
}
return res;
}
其他方法:
for (auto it = iMap.begin(); it != iMap.end(); it++)
cout << it->first << ':' << it->second << '\n';
C++中map按value排序
C++ STL中的map是以key排序的。
如何以value进行排序呢?
方案:将map的key和value以pair的形式装到vector中,对vector进行排序。下面使用unordered_map,而没有使用map)
sort(vtMap.begin(), vtMap.end(),
[](const pair<int, int> &x, const pair<int, int> &y) -> int {
return x.second < y.second;//按value值从小到大
});
C++ pair用法及使用sort函数对pair数据进行排序
unordered_map<char,int> m;
for(int i=0;i<s.length();i++){
m[s[i]]++;
}
vector<pair<char,int>> vtmap(m.begin(),m.end());
sort(vtmap.begin(),vtmap.end(),[](const pair<char,int> &a,pair<char,int> &b){
return a.second!=b.second?a.second>b.second:a.first<b.first;
}); //按第二个值从大到小,第一个值从小到大