今天在看优先队列,看官网给的例子,初始化有个奇怪的问题。代码如下:
class mycomparison
{
bool reverse;
public:
mycomparison(const bool& revparam=false)
{reverse=revparam;}
bool operator() (const int& lhs, const int&rhs) const
{
if (reverse) return (lhs>rhs);
else return (lhs<rhs);
}
};
int main ()
{
typedef std::priority_queue<int,std::vector<int>,mycomparison> mypq_type;
mypq_type fifth; //使用默认构造函数
mypq_type fifth (mycomparison(true)); // 有问题
fifith.push(0);
return 0;
}
如果把有问题那一行true去掉,使用默认构造函数,那下一行push那句就编译不过。怎么回事?例子给的使用默认构造函数是
--
修改:GoGoRoger FROM 222.129.50.*
FROM 222.129.50.*