繁体   English   中英

hash_set :: upper_bound()如何工作?

[英]How does hash_set::upper_bound() work?

Visual C ++的stdext::hash_set<T>::upper_bound()工作?
哈希表还如何使元素保持排序?

我已经尝试阅读源代码,但是很难解读STL代码...甚至从概念上讲,我也无法理解它:哈希表如何比较元素?

各种unordered_xxx模板使用哈希函数将对象分类到存储桶中。 将进入同一存储桶的对象进行分组,以便比较相等的对象相邻(其中“ compare equal”表示“ a < b为false, b < a为false,或者对于谓词版本, pr(a,b)为false,而pr(b,a)为false”)。 lower_bound()返回一个迭代器,该迭代器指向与传递的值匹配的第一个对象; upper_bound()返回一个迭代器,该迭代器在与传递的值匹配的最后一个对象之后。 没有全局排序。

哈希表不需要对元素进行排序; 它只需要比较任何新插入的元素与当前的最高值并相应地进行更新。 无需排序。

关于如何比较元素:这就是运算符的作用。 只要类型<T>实现了'>'运算符,就可以对其进行排序。 您可以为自己的类编写自己的>运算符,尽管它必须支持严格的排序(例如,在将“ abc”与“ abcdef”进行比较时,必须确定哪种情况下“较大”)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM