【发布时间】:2016-10-16 00:26:49
【问题描述】:
通过这个问题,我也试图了解 C++ 的基础知识,因为我对 C++ 非常陌生。对自定义类的向量/列表进行排序的问题有很多很好的答案,例如this。在所有示例中,传递给 sort 的比较器函数的签名都是这样的:
(const ClassType& obj1, const ClassType& obj2)
此签名对于比较器功能是强制性的吗?或者我们也可以给出这样的东西:
(ClassType obj1, ClassType obj2)
假设我会相应地修改比较器的主体。
如果第一个签名是强制性的,那为什么? 我想了解使用 const 和 reference'&' 背后的原因。 我能想到的是 const 是因为您不希望比较器函数能够修改元素。并且引用是为了不创建多个副本。
如果我想对包含指向自定义类对象的指针的向量进行排序,我的签名应该如何?像(1)或(2)(见下文)或两者都有效? 待排序的vertor是vector类型
(1)
(const ClassType*& ptr1, const ClassType*& ptr2)
(2)
(ClassType* ptr1, ClassType* ptr2)
【问题讨论】:
-
我认为您不想比较指针?你?即使数组包含指向对象的指针,我认为您可能想比较对象的实际实例对吗?
-
“我也在尝试了解 C++ 的基础知识,因为我对 C++ 还很陌生。” 你在用哪本书?