sort(vec.begin(), vec.end(), [](const pair<char, int> &p1, const pair<char, int> &p2) {
if (p1.second >p2.second)
return p1.second >p2.second ;
else if(p1.second ==p2.second )
return p1.first <p2.first;
}
);
报错:control may reach end of non-void lambda
出现原因:有些编译器下会提示上述编译错误。leetcode上也提示错误,可能是因为返回语句都在条件语句中的吧,添加上一行,其实最后的if外边的return是无用的。
sort(vec.begin(), vec.end(), [](const pair<char, int> &p1, const pair<char, int> &p2) {
if (p1.second >p2.second)
return p1.second >p2.second ;
else if(p1.second ==p2.second )
return p1.first <p2.first;
return p1.second >p2.second ;
}
);

本文详细解析了在C++中使用Lambda表达式进行自定义排序时遇到的control may reach end of non-void function错误,并提供了解决方案。通过修改Lambda表达式的return语句,确保所有路径都有返回值,从而避免编译错误。
336

被折叠的 条评论
为什么被折叠?



