按字符串C ++对存储在向量中的对象进行排序

时间:2014-03-09 19:48:10

标签: c++ sorting vector

想象一下带有字符串值的类。

class Test {
public:
    string name;
};

存储在矢量

vector<Test> d;

我想使用sort()函数按名称值对字母矢量中的对象进行排序。我知道sort()函数有第三个参数某种排序函数,但我不知道如何编写这个函数。

sort(d.begin(),d.end(),comp());

comp () { ? }

2 个答案:

答案 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 );