在我的应用程序中,我有一个CString值的CMap。在Map中添加元素之后,如果我在其他位置检索元素,则不会按照插入顺序获取元素。假设我检索第三个元素,则获得第五个元素。这是CMap的行为吗?为什么会发生?为什么从CMap中检索元素没有排序
0
A
回答
6
你问“为什么”,所以这里有云:
一个地图提供了一种有效的方式通过键来检索值。它通过使用一个比列表或数组更快的巧妙数据结构来实现这一点(在你知道某个元素是否存在或不存在的情况下,你必须搜索整个列表)。有一些权衡,如增加的内存使用率,以及无法做其他事情(例如知道事物被插入的顺序)。
有实现这个
- 一个HashMap,它通过散列值把钥匙进入水桶两种常用的方法。
- 树形图,其中安排键为二叉树,根据它们的排序方式
可以遍历地图,但它会根据它们是如何存储在内部,无论是按键的顺序(树图)或完全不可预知(hashmap)。你的CMap似乎是一个hashmap。
无论哪种方式,插入顺序不会保留。如果你想要的话,你需要一个额外的数据结构(如列表)。
3
如何将文档读取到CMap? http://msdn.microsoft.com/ru-ru/library/s897094z%28v=vs.71%29.aspx
真的是无序的地图。你如何检索元素?由GetStartPosition
和GetNextAssoc
?这里
http://msdn.microsoft.com/ru-ru/library/d82fyybt%28v=vs.71%29.aspx阅读备注备注
迭代序列是不可预测的;因此,“地图中的第一要素”没有特别的意义。
CMap的是,独特的键映射到值的字典集合类。将键值对(元素)插入到映射中后,可以使用键高效地检索或删除键对来访问它。您也可以迭代地图中的所有元素。
相关问题
- 1. 合并排序:为什么右侧没有剩余的元素?
- 2. 为什么这个散列表中的元素没有按预期排序
- 3. 检查元素有什么
- 4. 为什么ul元素没有高度?
- 5. 为什么你可以有没有thead元素的th元素?
- 6. 为什么我的TStringList没有排序?
- 7. 为什么我的DataGrid没有排序?
- 8. 为什么我的插入排序没有得到第一个元素?
- 9. 在SQL Server中检索没有子元素的元素
- 10. BeautifulSoup.find_all没有检索网页的元素
- 11. jquery检索元素没有某种类
- 12. 排序索引元素
- 13. 我不明白为什么这两个元素没有并排排列?
- 14. 为什么'toSet'方法混淆了ListBuffer中元素的排序?
- 15. 为什么Python字典的元素没有得到序列
- 16. 如何访问CMap中的元素?
- 17. 为什么Z-索引中没有被安排一个StackPanel
- 18. 为什么列表中显示sencha touch 2中没有元素?
- 19. 从Backbone.Collection.remove(n)检索元素
- 20. 为什么在索引1中没有元素时,不会抛出java.lang.StringIndexOutOfBoundsException异常?
- 21. 为什么在css中按照预期并排排列元素
- 22. D3 - 为什么这个排序函数没有更新其选择中的所有元素?
- 23. 为什么Haskell没有单个元素元组?
- 24. 从我的队列中检索元素不起作用,我的检索方法有什么问题?
- 25. 为什么jQuery在ready事件中没有找到元素?
- 26. 为什么在javascript中的元素的宽度没有增加
- 27. 为什么没有元素被插入到我的BST中
- 28. 为什么元素没有被插入到数组中?
- 29. Bubblesort不会排序超过254859个元素 - 为什么?
- 30. 有没有什么办法从过去检索输入值
这是MFC吗?你能提供一些代码吗? – Nick 2013-03-21 08:39:37
我对CMap一无所知,但这就是地图通常的工作方式。它们基于散列或基于订单,两者都不保留广告订单。 – Thilo 2013-03-21 08:39:43
@Nick ya我正在谈论MFC集合类。 – CodeRider 2013-03-21 08:41:07