在c ++中对向量的内容进行排序

时间:2013-09-01 16:23:37

标签: c++ sorting vector

我有一个容纳一些物体的矢量容器。对象具有各种属性,主要是int和字符串。我想要一个STL算法来按容器的不同属性对其进行排序。 例如,如果棒球卡的集合具有作为字符串的玩家名称,并且玩家开始棒球的一年(这是整数),我如何按年份数对矢量容器进行排序,然后根据玩家名称按字母顺序对其进行排序? 我从来没有真正学过STL,因为我的教授过去禁止使用STL,所以我现在正努力学习它,这样我就能更快地编程。

2 个答案:

答案 0 :(得分:2)

std::sort()函数使用二元谓词作为第三个参数,可用于自定义排序顺序。您可以使用两个不同的谓词:

 std::sort(v.begin() v.end(),
    [](card const& c0, card const& c1){
        return c0.name() < c1.name();
    });

......同样适用于其他属性。

答案 1 :(得分:1)

您需要做的就是

#include <algorithm>

bool operator<(const MyObject& x, const MyObject& y)
{
    ...
}

std::sort(vec.begin(), vec.end());

使用operator<定义您想要的顺序,如果x在排序后y之前,则返回true,否则返回false。从您的描述中听起来就像您想先比较年份,如果它们相等则比较名称。

对你的教授感到羞耻。