gpt4 book ai didi

c++ - < 没有成员的类的运算符

转载 作者:行者123 更新时间:2023-11-28 01:15:23 25 4
gpt4 key购买 nike

有这方面的约定吗?它主要只需要在 STL 容器中进行排序。

我考虑了几种可能性,比如比较两个对象的地址,或者总是返回 true 但我不确定什么是最好的。排序算法总是会返回真正的困惑吗?

class empty {
bool operator< (const empty& rhs) const {
// ???
}
}

附言 它可能发生在奇怪的情况下,例如当一个类仅基于#define 等获取成员变量时,或者当该类已经由其他人编写并且您不想从根本上更改它但您需要将它或一个类将其转置到某些需要小于运算符的容器中。

最佳答案

如果您想使类型“可排序”但实际上并不关心排序顺序,您可以使小于运算符始终返回 false。让它始终返回 true 会导致某些算法失败,因为如果 A<BB<A那么它就不是“严格的弱排序”。使运算符始终返回 false 表示所有实例都是等价的。如果使用稳定排序算法,则不会移动任何元素。

如果您需要某种实际排序但又不太关心它是什么(例如将元素放入 std::map ),您可以 return this < &rhs按地址比较。请注意,这不适用于 std::sort()因为当算法交换值时,它们的地址不会改变,但对于 std::map 是可以的和 std::set因为那些不依赖于移动值。请参阅下面来自 Peter 的评论以了解注意事项。

最后,请注意没有成员的类仍然占用一个字节的存储空间。你可以存储 uint8_tchar在类中不增加空间,并将其作为排序标准。

关于c++ - < 没有成员的类的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58889042/

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