【发布时间】:2013-09-16 15:13:28
【问题描述】:
我想知道如何对字符串向量进行排序,以使字符数最少的字符串位于向量顶部。例如,如果向量中有 ABCD、ABCDE、ABC。 ABC 达到顶峰。我很想知道如何使用 sort_if 实现这一点以及谓词是什么样的?也欢迎任何其他方法
【问题讨论】:
-
没有
std::sort_if()。不过,std::sort()采用谓词的情况过多。很明显,谓词将比较参数的长度,如果它们相等,则比较字符串的字典顺序;否则,如果第一个参数较短,它将返回true。 -
仅供参考 - 这些答案现在已经过时了,现在不需要重载运算符,只需使用 lambda!
-
使用 lambda 表达式排序的示例:
std::sort(words.begin(), words.end(), [](std::string a, std::string b) {return a.length() < b.length(); });