【发布时间】:2013-08-05 11:41:24
【问题描述】:
反向排序容器的推荐方式(例如:Sorting a vector in descending order)似乎是:
std::sort(numbers.begin(), numbers.end(), std::greater<int>());
我知道第三个参数是帮助 sort() 进行比较的函数或仿函数,并且 std::greater 是模板仿函数,但我不明白这里发生了什么。我的 C++ 生锈了,所以如果这些是愚蠢的问题,请多多包涵:为什么std::greater<int> 后面有括号?我们是否在这里创建一个新的std::greater 对象?在这种情况下,我们为什么不需要new 关键字呢?
【问题讨论】:
-
希望您不要将
new与创建对象联系在一起。 -
new返回一个指针,而不是一个对象。 -
在 C++ 之后我经历了很多语言,
new对我来说意味着很多东西,我认为这就是造成混乱的原因。 C++中只有动态分配的对象才需要new,否则可以直接调用构造函数,对吗? -
@sundar 正确。不要使用
new,除非你是动态分配的,即使那样只使用智能指针。