Oli*_*rth 74
使用比较功能:
bool compareByLength(const data &a, const data &b)
{
return a.word.size() < b.word.size();
}
Run Code Online (Sandbox Code Playgroud)
然后std::sort在标题中使用#include <algorithm>:
std::sort(info.begin(), info.end(), compareByLength);
Run Code Online (Sandbox Code Playgroud)
Mur*_*los 35
只需做一个比较函数/仿函数:
bool my_cmp(const data& a, const data& b)
{
// smallest comes first
return a.word.size() < b.word.size();
}
std::sort(info.begin(), info.end(), my_cmp);
Run Code Online (Sandbox Code Playgroud)
或者bool operator<(const data& a) const在data课堂上提供:
struct data {
string word;
int number;
bool operator<(const data& a) const
{
return word.size() < a.word.size();
}
};
Run Code Online (Sandbox Code Playgroud)
弗雷德说:或非成员
struct data {
string word;
int number;
};
bool operator<(const data& a, const data& b)
{
return a.word.size() < b.word.size();
}
Run Code Online (Sandbox Code Playgroud)
并致电std::sort():
std::sort(info.begin(), info.end());
Run Code Online (Sandbox Code Playgroud)
是的:您可以使用自定义比较功能进行排序:
std::sort(info.begin(), info.end(), my_custom_comparison);
Run Code Online (Sandbox Code Playgroud)
my_custom_comparison需要是一个函数或一个带有operator()重载的函数(一个函子),它接受两个data对象并返回一个bool指示第一个是否在第二个之前排序的信息(即,first < second).或者,您可以operator<为类类型重载data; operator<是使用的默认顺序std::sort.
无论哪种方式,比较函数必须产生元素的严格弱排序.
| 归档时间: |
|
| 查看次数: |
92194 次 |
| 最近记录: |