hashmap遍历问题,查找顺序并非插入时的顺序

hashmap遍历问题,查找顺序并非插入时的顺序

今天遍历hashmap读取数据时,发现我的map对象已经把配置表的所有数据都读取出来了,但是去遍历的时候,发现只遍历了一部分数据。

MAP_OF_CFG_DATA::iterator iter_begin = map_of_cfg_data_.begin();
MAP_OF_CFG_DATA::iterator iter_end = map_of_cfg_data_.end();

//这是需要获取的一个数据的结构体
TIMING_DATA timing_data;
//这里开始去遍历
for(iter_begin; iter_begin != iter_end; ++iter_begin)
{
	timing_data = iter_begin->second;
	//如果达成条件了就退出
	if_start = FunctionName(..);
	if(if_start)
	{
		...
		break;
	}
}

在读取配置表的时候,map_of_cfg_data_这个hash_map对象存入的键值顺序分别是int类型的6,7,8,9,10…1,4,5,16,17,18
而在for循环里面遍历时,第一个数据却是5这个键值的,然后是18,当我想要判断7这个键所对应的数据内容时,发现一直遍历不到这个数据,后来才发现到6的时候就已经进入判断里面,然后break出去了。

总结:
hashmap会先用hash函数处理键值,让其能够均匀分布到map中,这就会导致map中key的顺序并非插入时候的顺序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值