在我的应用程序中,我有一个CMtring的CString值.在Map中添加元素后,如果我在其他地方检索元素,则不按插入顺序获取元素.假设我检索第三个元素,我得到第五个元素.这是CMap的行为吗?为什么会这样?
你问"为什么",所以这里是:
Map提供了一种通过密钥检索值的有效方法.它通过使用一个比列表或数组更快的聪明的数据结构来实现这一点(在你知道元素是否在那里之前你必须搜索整个列表).存在权衡,例如增加的内存使用量,以及无法做其他事情(例如知道插入事物的顺序).
有两种常见的方法可以实现这一点
您可以迭代地图,但它将根据它们在内部存储的方式,按键顺序(树形图)或完全不可预测(hashmap).你的CMap似乎是一个hashmap.
无论哪种方式,都不会保留插入顺序.如果需要,您需要额外的数据结构(例如列表).