根据字符串大小排序字符串向量

时间:2013-09-16 15:13:28

标签: c++ vector stl

我想知道如何对字符串向量进行排序,使得字符数量最少的字符串位于向量之上。例如,如果向量具有ABCD,ABCDE,ABC。 ABC达到顶峰。我有兴趣知道如何用sort_if实现这一点以及谓词会是什么样子?任何其他方法也欢迎

3 个答案:

答案 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 );

您可以定义一个基于长度进行比较的函数。