我想知道如何对字符串向量进行排序,使得字符数量最少的字符串位于向量之上。例如,如果向量具有ABCD,ABCDE,ABC。 ABC达到顶峰。我有兴趣知道如何用sort_if实现这一点以及谓词会是什么样子?任何其他方法也欢迎
答案 0 :(得分:14)
创建自己的自定义仿函数来比较字符串的大小,并使用它来对字符串进行排序。
struct compare {
bool operator()(const std::string& first, const std::string& second) {
return first.size() < second.size();
}
};
std::vector<std::string> v;
compare c;
std::sort(v.begin(), v.end(), c);
答案 1 :(得分:6)
应该能够使用常规std::sort(first, last, compare)
和这样的比较函数:
bool compareLen(const std::string& a, const std::string& b)
{
return (a.size() < b.size());
}
答案 2 :(得分:2)
std::sort
为自定义比较提供可选参数
template< class RandomIt, class Compare >
void sort( RandomIt first, RandomIt last, Compare comp );
您可以定义一个基于长度进行比较的函数。