如何确保 std::map 是有序的?

2024-05-09

Using a std::map<int, ...>如何确保在插入时以整数键的升序对其进行迭代?


你不需要做任何事。地图将根据键的值按升序排列。

在内部,映射在键之间执行比较以对其元素进行排序。默认情况下,它使用std::less<KEY>,这相当于bool operator<(int, int)对于整数。对于用户定义的类型,您必须选择:

  1. 实施一个bool operator<(const MyType&, const MyType&)在用户定义的类型之间实施严格的弱排序比较。如果您的类型具有自然排序,请使用此选项

  2. 提供一个实现严格弱排序的二元函子,您可以将其作为第三个模板参数传递给映射。如果您的类型没有自然顺序,或者您想要使用与使用的顺序不同的顺序构建地图,请使用此选项std::less<Key>通过bool operator<(...)从第 1 点开始。

幕后通常发生的事情是,映射被实现为自平衡二叉树,并使用严格的弱排序在映射中放置新元素,并确定两个元素是否相等。顺便说一句,同样的逻辑也适用于std::set,其中键和值是相同的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何确保 std::map 是有序的? 的相关文章