gpt4 book ai didi

c++ - 为什么未按顺序从 CMap 中检索元素

转载 作者:太空宇宙 更新时间:2023-11-04 14:55:43 27 4
gpt4 key购买 nike

在我的应用程序中,我有一个 CString 值的 CMap。在 Map 中添加元素后,如果我在其他地方检索元素,则不会按插入顺序获取元素。假设我检索第三个元素,我会像那样得到第五个元素。它是 CMap 的行为吗?为什么会这样?

最佳答案

你问的是“为什么”,所以这里是:

Map 提供了一种通过键检索值的有效方法。它通过使用比列表或数组更快的智能数据结构来实现这一点(在知道元素是否存在之前,您必须搜索整个列表)。需要权衡取舍,例如内存使用量增加,以及无法做其他事情(例如知道事物的插入顺序)。

有两种常见的实现方式

  • 一个散列映射,它通过散列值将键放入桶中。
  • TreeMap ,根据键的排序方式将键排列成二叉树

您可以遍历映射,但这将取决于它们在内部的存储方式,无论是按键顺序( TreeMap )还是完全不可预测的(散列图)。您的 CMap 似乎是一个 HashMap 。

无论哪种方式,插入顺序都不会保留。如果需要,您需要一个额外的数据结构(例如列表)。

关于c++ - 为什么未按顺序从 CMap 中检索元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15542710/

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