如何使用cmp函数对矢量字符串数组进行排序

时间:2018-06-08 18:54:48

标签: c++ string sorting

这是我的比较功能

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

这是我的Vector数组

vector<string>v(n);

这是我的排序功能

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

我哪里出错了

1 个答案:

答案 0 :(得分:2)

  

我哪里出错了

比较函数should have签名类似于以下内容:

 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::string组成,你可以选择通过值或引用或const引用来传递它们但是你不能像你尝试的那样传递指针(为此你需要std::vector<std::string *>,有点毫无意义的tbh)