gpt4 book ai didi

c++ - 比较仿函数类型与运算符<

转载 作者:可可西里 更新时间:2023-11-01 15:34:34 24 4
gpt4 key购买 nike

Google C++ Style Guide , section on Operator Overloading建议不要重载任何 运算符(“除非在罕见的特殊情况下”)。具体来说,它建议:

In particular, do not overload operator== or operator< just so that your class can be used as a key in an STL container; instead, you should create equality and comparison functor types when declaring the container.

我不太清楚这样的仿函数是什么样的,但我的主要问题是,为什么您要为此编写自己的仿函数?不会定义 operator< ,并使用标准 std::less<T>功能,更简单?使用一个比另一个有什么优势吗?

最佳答案

除了更基本的类型,小于操作并不总是微不足道的,甚至相等性也可能因情况而异。

想象一下一家航空公司想要为所有乘客分配登机号的情况。这个数字反射(reflect)了登机顺序(当然)。现在,是什么决定了谁先于谁?您可能只接受客户注册的顺序——在这种情况下,小于操作将比较登记时间。您可能还会考虑客户为门票支付的价格——低于现在比较票价的价格。

……等等。总而言之,定义一个operator <是没有意义的。在 Passenger 上尽管可能需要将乘客放在分类容器中。我认为这就是 Google 所发出的警告。

关于c++ - 比较仿函数类型与运算符<,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/183606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com