首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用cmp函数对向量字符串数组进行排序

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

Stack Overflow用户
提问于 2018-06-09 02:54:48
回答 1查看 452关注 0票数 -5

这是我的比较函数

代码语言:javascript
复制
bool cmp(string* s1,string* s2)
{return(strlen(s1)>strlen(s2));}

这是我的Vector数组

代码语言:javascript
复制
vector<string>v(n);

这是我的排序函数

代码语言:javascript
复制
sort(v.begin(),v.end(),cmp);

我哪里出错了?

EN

回答 1

Stack Overflow用户

发布于 2018-06-09 03:13:10

我哪里出错了?

比较函数should have签名类似如下:

代码语言:javascript
复制
 bool cmp(const Type1 &a, const Type2 &b);

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

代码语言:javascript
复制
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)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50766847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档