我有一个包含一些对象的矢量容器。对象具有各种属性,主要是整数和字符串。我想要一个 STL 算法,用于按容器的不同属性对容器进行排序。例如,如果棒球卡集合的球员姓名是字符串,球员开始打棒球的年份是整数,我如何按年份编号对向量容器进行排序,然后按球员姓名的字母顺序对其进行排序? 我从来没有真正学过 STL,因为我的教授过去禁止使用它,所以我现在正在努力学习它,以便我可以更快地编程。
问问题
205 次
2 回答
2
该std::sort()
函数使用二进制谓词作为第三个参数,可用于自定义排序顺序。您可以只使用两个不同的谓词:
std::sort(v.begin() v.end(),
[](card const& c0, card const& c1){
return c0.name() < c1.name();
});
...对于其他属性也是如此。
于 2013-09-01T16:34:04.163 回答
1
你需要做的就是
#include <algorithm>
bool operator<(const MyObject& x, const MyObject& y)
{
...
}
std::sort(vec.begin(), vec.end());
用于operator<
定义您想要的顺序,如果x
应该y
在排序之后返回true,否则返回false。根据您的描述,听起来您想先比较年份,如果它们相等,则比较名称。
为你的教授感到羞耻。
于 2013-09-01T16:28:37.653 回答