【发布时间】:2013-06-19 14:30:45
【问题描述】:
我真的很难理解这些声明
static bool compare ( const shared_ptr<int> lhs,const shared_ptr<int> rhs )
{ return (*lhs) < (*rhs) ; }
multiset<shared_ptr<int>,decltype(compare)*> item{ compare } ;
如果我在 decltype(compare) 之后没有给出指针,它会给出错误吗?为什么会出错?为什么我应该提供 bool* 而不是 bool 作为算法函数的谓词,再次在 item { compare } 的花括号中给出 compare 的好处是什么?它会按排序顺序在多集中插入对象吗?如果我没有给出 { compare } 会发生什么?
【问题讨论】:
-
提示:
decltype(compare)不是对compare的调用返回的类型。 -
比较的返回类型不是bool吗??
-
但是
compare的类型和它的返回类型不一样。 -
为什么???我的知识真的很少..请解释一下。
-
OK,
compare是某种返回 bool 的静态函数。decltype(compare)是该函数的类型。item是一个multimap,使用compare作为比较函数来实现其元素的排序。
标签: c++ shared-ptr decltype multiset