我们什么时候应该使用 Indefinite_Hashed_Maps 或 Hashed_Maps
我对何时使用 Ada.Containers.Indefinite_Hashed_Maps 或 Hashed_Maps 感到困惑。
这两个通用包有什么区别?
I'm confused about when to use Ada.Containers.Indefinite_Hashed_Maps or Hashed_Maps.
What is the difference between the two generic packages?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Ada.Containers.Indefinite_Hashed_Maps 包支持键和元素的不确定类型。不定类型是需要附加约束来声明对象的类型。示例:String、T'Class、具有变体部分的类型。
Hashed_Maps 实现能够将键和元素存储在映射实现记录(无论是表还是树)中。这是两者之间最有效的实现。
由于附加约束,Indefinite_Hashed_Maps 无法轻松存储键和元素。大多数实现必须使用对键和元素的访问
来存储它们。每次添加元素时,都需要额外的内存分配来存储键和元素。
尽管 Indefinite_Hashed_Maps 适用于有限类型,但如果键和元素类型是确定的,最好使用 Hashed_Maps。
The Ada.Containers.Indefinite_Hashed_Maps package supports types that are indefinite for the key and element. An indefinite type is a type that needs an additional constraint to declare an object. Example: String, T'Class, a type with a variant part.
The Hashed_Maps implementation is able to store the key and element within the map implementation records (be it a table or a tree). This is the most efficient implementation between the two.
The Indefinite_Hashed_Maps cannot store the key and element as easily due to the additional constraint. Most implementation will have to use an access to the key and to the element
to store them. Each time an element is added, an additional memory allocation is required to store the key and element.
Although Indefinite_Hashed_Maps works for finite types, it is best to use Hashed_Maps if the key and element types are definite.