c++ - 如何使用 cmp 函数对向量字符串数组进行排序
问题描述
这是我的比较功能
bool cmp(string* s1,string* s2)
{return(strlen(s1)>strlen(s2));}
这是我的向量数组
vector<string>v(n);
这是我的排序功能
sort(v.begin(),v.end(),cmp);
我哪里错了
解决方案
我哪里错了
比较函数应具有类似于以下的签名:
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
s 组成,您可以选择通过值或引用或const
引用传递它们,但您不能像尝试过的那样传递指针(为此您需要std::vector<std::string *>
,有点无意义 tbh)
推荐阅读
- xml - 从 Bison 打印 XML 文件
- spring-boot - 如何自定义 websocket 握手和/或添加过滤器?
- c# - 更新绑定列表时 WPF ListBox 不更新
- embedded-jetty - Windows 上的嵌入式 Jetty 留下临时文件
- r - How do I add a custom `labels` for just one tick?
- r - R:所有列组合的频率
- java - 尝试从空数组中读取
- javascript - npm 编译错误 - 找不到模块:bootstrap-theme.css
- python - 在 QSpinBox 中禁用滚轮
- typescript - rxjs:嵌套的http请求