想象一下带有字符串值的类。
class Test {
public:
string name;
};
存储在矢量
中vector<Test> d;
我想使用sort()函数按名称值对字母矢量中的对象进行排序。我知道sort()函数有第三个参数某种排序函数,但我不知道如何编写这个函数。
sort(d.begin(),d.end(),comp());
comp () { ? }
答案 0 :(得分:2)
您可以创建比较器
bool comp(const Test &test1, const Test &test2){
return test1.getName() < test2.getName();
}
或者您可以重载班级中的operator <
bool operator < (const Test &test){
return name < test.name;
}
请注意,如果重载operator <
,则无需在sort函数中添加第三个参数。
答案 1 :(得分:0)
comp
将是一个函数,它将返回bool
以指示两个参数中的比较。在您的情况下,它应该看起来像:
bool compare ( const Test& s1, const Test& s2 )
{
return ( s1.name < s2.name );
}
您的来电将是:sort ( d.begin(), d.end(), compare );