gpt4 book ai didi

c++ - 什么时候 STL 集合的两个元素被认为是相同的?

转载 作者:行者123 更新时间:2023-11-30 00:42:21 26 4
gpt4 key购买 nike

来自 cplusplus.com:

template < class Key, class Compare = less<Key>,
class Allocator = allocator<Key> > class set;

"compare:比较类:接受两个与容器元素相同类型的参数并返回bool的类。表达式comp(a,b),其中comp是这个比较类的对象,a和b是容器的元素,如果在严格的弱排序操作中将 a 放置在比 b 更早的位置,则应返回 true。这可以是实现函数调用运算符的类或指向函数的指针(请参阅构造函数example). 这默认为 less,它返回与应用小于运算符 (a < b) 相同的结果。set 对象使用此表达式来确定元素在容器中的位置。集合容器中的所有元素始终遵循此规则排序。”

鉴于比较类用于决定两个对象中哪个“更小”或“更少”,该类如何检查两个元素是否相等(例如,以防止相同元素插入两次)?

我可以在这里想象两种方法:一种是在后台调用 (a == b),但不提供覆盖此比较的选项(与默认的 less <Key> 一样)似乎不太 STL-对我来说。另一个假设是 (a == b) == !(a < b) && !(b < a) ;也就是说,如果两个元素都不“小于”另一个元素,则认为两个元素相等,但是考虑到比较可以是任意复杂类的对象之间的任意复杂 bool 仿函数,这对我来说也不合适。

那么它到底是怎么做到的呢?

最佳答案

不是完全重复,而是第一个答案 here回答你的问题

你对行为的第二次猜测是正确的

关于c++ - 什么时候 STL 集合的两个元素被认为是相同的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1239364/

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