对反向排序容器的推荐方法(例如:按降序排序向量)似乎是:
std::sort(numbers.begin(), numbers.end(), std::greater<int>());
我理解第三个参数是一个函数或函数,它帮助sort()进行比较,而std :: greater是一个模板函子,但我不明白这里发生了什么.我的C++非常生疏,如果这些都是愚蠢的问题,请耐心等待:为什么那之后std::greater<int>有括号?我们std::greater在这里创建一个新对象吗?在这种情况下,为什么我们不需要new这里的关键字?
为什么在std :: greater之后有括号?我们在这里创建一个新的std :: greater对象吗?
那是对的.表达式std::greater<int>()对应于创建类型的对象std::greater<int>.
在这种情况下,为什么我们不需要这里的新关键字?
我们不需要new关键字,因为对象是在堆栈上创建的,而不是在堆上创建的.只有动态创建的对象才需要在堆上.所不同的是明确解释这里.
基本上,在编译时,编译器已经知道要为对象分配多少内存,以及何时应该销毁它(这是std :: sort函数超出范围的时候).new应该随时使用
| 归档时间: |
|
| 查看次数: |
216 次 |
| 最近记录: |