我有一个关于使用类对象对deque进行排序的问题。所以我有一个名为“rq”的deque,它拥有多种类型的数据。我想通过比较TAU值来对双端队列进行排序。但是,在尝试对双端队列进行排序时,我不断遇到疯狂的编译器错误。下面是我尝试做的功能,以便比较TAU值并对双端队列进行排序。我将如何解决这个问题?
deque<system>rq
//and so on
struct tauSort
{
bool operator ()( system &a, system &b)
{
return a.getTau() < b.getTau();
}
}
//Blah Blah
system sorting;
sort(rq.begin(), rq.end(), sorting)
答案 0 :(得分:2)
此:
system sorting;
应该是这样的:
tauSort sorting;
因为您想要传递排序仿函数,而不是system
对象。你也忘记了sort
陈述末尾的分号。
您也可以这样做:
sort(rq.begin(), rq.end(), tauSort());
更不用说您可以在函数中通过常量引用传递system
,因为您不需要修改它们。而且你也可以更好地制作operator()
const:
bool operator ()(system const& a, system const& b) const { … }