std::greater{} 和 std::greater<int>() 有什么区别?
有些人写
std::nth_element(v.begin(), v.begin()+1, v.end(), std::greater{});
还有一些是这样写的
std::nth_element(v.begin(), v.begin()+1, v.end(), std::greater<int>());
之间是什么THRE diffrencestd::greater{}和std::greater<int>()?
回答
这是 C++14 的新功能,这导致了两个完全不同的类。
在 C++14 中,std::greater为其模板参数获取默认值:void。
您最终会得到std::greater<void>或std::greater<int>。
std::greater<void>是推导其参数的所谓“透明”比较器的特化,请参阅其参考以获取更多信息。
THE END
二维码