首页 > 解决方案 > 如何使用 cmp 函数对向量字符串数组进行排序

问题描述

这是我的比较功能

bool cmp(string* s1,string* s2)
{return(strlen(s1)>strlen(s2));}

这是我的向量数组

vector<string>v(n);

这是我的排序功能

sort(v.begin(),v.end(),cmp);

我哪里错了

标签: c++stringsorting

解决方案


我哪里错了

比较函数应具有类似于以下的签名:

 bool cmp(const Type1 &a, const Type2 &b);

因此,您的比较函数可能如下所示:

bool cmp(std::string const& s1, std::string const& s2)
{
    return s1.length() > s2.length();
}

它起作用了,请说明它起作用的原因

它之所以有效,是因为std::sort它将采用 2 个向量元素并在每轮将它们发送到比较函数。向量由std::strings 组成,您可以选择通过值或引用或const引用传递它们,但您不能像尝试过的那样传递指针(为此您需要std::vector<std::string *>,有点无意义 tbh)


推荐阅读