使用类对象对双端队列进行排序

时间:2014-04-17 15:39:31

标签: c++ class sorting deque

我有一个关于使用类对象对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)

1 个答案:

答案 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 { … }