在针对一个map进行值排序的时候,想到将map中键值对放到vector中,然后通过sort来进行排序。于是,奇妙的事情发生了。。,代码如下:
//将map赋值给vector
vector<pair<char, int>> numV(numM.begin(), numM.end());
//从小到大排序
//sort(numV.begin(), numV.end(), [numV](pair<char,int> i, pair<char, int> j){
// if (i.second > j.second)
// {
// return true;
// }
// return false;
// });
sort(numV.begin(), numV.end(), [numV](pair<char, int> i, pair<char, int> j) {
if (i.second > j.second)
{
return false;
}
return true;
});
注释部分代码运行正常,于是巨坑来了,想当然觉得从大到小排序不就是return取反吗,于是就有上面第二部分代码。但是,错误来了:
经码友提示,原来是因为
这里面的比较函数是严格弱类型,也就是当判断a==b的时候,必须返回false,(两值相等返回 false,错的那边返回 true,所以错了。)
引用码友的一句话------(神奇的 C++)