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

C++ 在c+中对向量的内容进行排序+;,c++,sorting,vector,C++,Sorting,Vector,我有一个向量容器,里面有一些对象。对象具有各种属性,主要是int和string。我想要一个STL算法,用于按不同属性对容器进行排序。 例如,如果棒球卡集合中的球员姓名是字符串,球员开始打棒球的年份是整数,那么我如何按年份编号对向量容器进行排序,然后再按球员姓名的字母顺序进行排序? 我从来没有真正学习过STL,因为我的教授在过去禁止使用它,所以我现在尝试学习它,这样我可以更快地编程 你需要做的就是 #include <algorithm> bool operator<(cons

我有一个向量容器,里面有一些对象。对象具有各种属性,主要是int和string。我想要一个STL算法,用于按不同属性对容器进行排序。 例如,如果棒球卡集合中的球员姓名是字符串,球员开始打棒球的年份是整数,那么我如何按年份编号对向量容器进行排序,然后再按球员姓名的字母顺序进行排序? 我从来没有真正学习过STL,因为我的教授在过去禁止使用它,所以我现在尝试学习它,这样我可以更快地编程

你需要做的就是

#include <algorithm>

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

std::sort(vec.begin(), vec.end());
#包括
bool操作符您需要做的就是

#include <algorithm>

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

std::sort(vec.begin(), vec.end());
#包括
bool操作符std::sort()
函数使用二进制谓词作为第三个参数,可用于自定义排序顺序。您可以只使用两个不同的谓词:

 std::sort(v.begin() v.end(),
    [](card const& c0, card const& c1){
        return c0.name() < c1.name();
    });
std::sort(v.begin()v.end(),
[](卡常数和c0、卡常数和c1){
返回c0.name()
。。。对于其他属性也是如此。

函数使用二进制谓词作为第三个参数,可用于自定义排序顺序。您可以只使用两个不同的谓词:

 std::sort(v.begin() v.end(),
    [](card const& c0, card const& c1){
        return c0.name() < c1.name();
    });
std::sort(v.begin()v.end(),
[](卡常数和c0、卡常数和c1){
返回c0.name()

。。。同样,对于其他属性,

不,我并不关心中间的部分排序。我只想按名称排序,显示到屏幕,然后按年排序,并显示到屏幕上。不,我不关心中间部分排序。我只想按名称排序,显示在屏幕上,然后按年份排序,然后显示在屏幕上。谢谢,这更清晰了!谢谢,这更清楚了!