Using a std::map<int, ...>
如何确保在插入时以整数键的升序对其进行迭代?
你不需要做任何事。地图将根据键的值按升序排列。
在内部,映射在键之间执行比较以对其元素进行排序。默认情况下,它使用std::less<KEY>
,这相当于bool operator<(int, int)
对于整数。对于用户定义的类型,您必须选择:
实施一个bool operator<(const MyType&, const MyType&)
在用户定义的类型之间实施严格的弱排序比较。如果您的类型具有自然排序,请使用此选项
提供一个实现严格弱排序的二元函子,您可以将其作为第三个模板参数传递给映射。如果您的类型没有自然顺序,或者您想要使用与使用的顺序不同的顺序构建地图,请使用此选项std::less<Key>
通过bool operator<(...)
从第 1 点开始。
幕后通常发生的事情是,映射被实现为自平衡二叉树,并使用严格的弱排序在映射中放置新元素,并确定两个元素是否相等。顺便说一句,同样的逻辑也适用于std::set
,其中键和值是相同的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)